在 C 中使用 C++ 类:如何正确编写某种 "delete/dispose" 函数?

Using C++ classes in C: How to properly write some sort of "delete/dispose" function?

我需要在 C 代码中使用 C++ class。

有了这样的 C++ class:

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(???) 的完整代码来删除之前创建的(with new_CMyClass())对象实例?

一个可能的解决方案是在将 C 类型转换为 C++ 后简单地调用 delete class。

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