I need to use a C++ class in C code.
With such a C++ class:
class MyClass
{
public:
void myFunction()
{
cout << "Value = " << m_value;
}
private:
int m_value;
};
I have the following wrapper:
typedef void CMyClass;
#ifdef __cplusplus
extern "C" {
#endif
CMyClass * new_MyClass();
void c_myFunction(const CMyClass * ptr);
void c_dispose( ??? ); // to delete/destruct
#ifdef __cplusplus
}
#endif
// implementation below:
CMyClass * new_CMyClass()
{
MyClass * ptr = new MyClass();
return (CMyClass*)ptr;
}
void c_myFunction(const CMyClass * ptr)
{
MyClass * tmp = (MyClass*)ptr;
tmp->myFunction();
}
void c_dispose( ??? )
{
/* ??? */
}
I would like just to make sure I won't have any problems like memory leaks, zombie pointers, with my c_dispose
function.
How to properly write the complete code for c_dispose(???)
to delete the previously created (with new_CMyClass()
) object instance?
A possible solution would be to simply call the delete
once you casted the C type to C++ class.
void c_dispose(CMyClass * ptr){
MyClass * tmp = (MyClass*)ptr;
delete tmp;
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments