Использование классов C ++ в C: Как правильно написать что-то вроде & quot; удалить / удалить & quot; функционировать?

Мне нужно использовать класс 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()) экземпляр объекта?

0

Решение

Возможным решением будет просто позвонить delete как только вы приведете тип C к классу C ++.

void c_dispose(CMyClass * ptr){
MyClass * tmp = (MyClass*)ptr;
delete tmp;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]