在 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;
}
我需要在 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;
}