Мне нужно использовать класс C ++ в C-коде.
С таким классом C ++:
class MyClass
{
public:
void myFunction()
{
cout << "Value = " << m_value;
}
private:
int m_value;
};
У меня есть следующая обертка:
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( ??? )
{
/* ??? */
}
Я хотел бы просто убедиться, что у меня не будет таких проблем, как утечки памяти, указатели зомби, с моим c_dispose
функция.
Как правильно написать полный код для c_dispose(???)
удалить ранее созданное (с помощью new_CMyClass()
) экземпляр объекта?
Возможным решением будет просто позвонить delete
как только вы приведете тип C к классу C ++.
void c_dispose(CMyClass * ptr){
MyClass * tmp = (MyClass*)ptr;
delete tmp;
}
Других решений пока нет …