在 C 中使用 C++ 类:如何正确编写某种 "delete/dispose" 函数?
Using C++ classes in C: How to properly write some sort of "delete/dispose" function?
我需要在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()
)对象实例?
一种可能的解决方案是一旦将C类型强制转换为c++类,就简单地调用delete
。
void c_dispose(CMyClass * ptr){
MyClass * tmp = (MyClass*)ptr;
delete tmp;
}
相关文章:
- 析构函数和'delete'之间的区别
- 析构函数中的"delete this"
- 析构函数是否会自动调用 delete[] C++?
- 将复制构造函数设置为private和=delete有什么区别
- 在析构函数中调用"delete"运算符时"compiler is out of heap space"编译器错误
- 继承 =delete 函数
- new[] / delete[] 并在C++中抛出构造函数/析构函数
- 我们什么时候应该在 C++ 中将析构函数声明为 =DELETE
- 在析构函数中使用 delete[]:为 RtlValidateHeap 指定的地址无效
- 将复制构造函数超载与DELETE,然后调用C 子类的默认构造函数
- delete[]调用析构函数时出现内存错误
- 我应该在函数中使用 delete[] 吗?
- 虚拟析构函数和delete关键字
- Delete导致基类中的虚拟析构函数出现内存错误
- c++析构函数调用一个delete运算符
- 将 delete 作为运算符或函数调用是否有任何区别
- 析构函数调用delete函数时程序崩溃
- delete[]函数在C++中无法正常工作
- std::unique_ptr<T[]> 使用派生对象数组,使用 delete 函数
- 如何对类对象使用delete函数