我有一个常见的问题是为 C 库编写 C++ 包装器……我的主要存储是一个 C-Struct 指针,它始终表示一个 C++ 类,其中只包含一个数据文件。
class MyClassC {
struct MyStructS * hdl
...
}
创建所有的构造函数、静态函数和方法函数没问题……我的设计问题是现在……我应该使用值类设计还是指针类设计。
值类总是返回对象而不是指针:
值类在MyStructS和MyClassC之间具有ONE to MANY关系
MyClassC myMethod () {
...
return MyClassC(struct MyStructS *...);
}
值类的析构函数从不释放struct MyStructS 指针并且大部分为空
值的析构函数是静态或方法,主要称为destry或delete
MyClassC::delete() {
DestroyMyPointer(&hdl)
}
...
MyClassC obj = {...};
...
obj.delete();
...
值类也是方法的参数值:
some_proc_or_method (MyClassC arg1, MyClassC arg2, …) {
...
}
还有一个问题:
如何为值类参数创建默认参数?
some_proc_or_method (MyClassC arg1, MyClassC arg2 = MyClassC {...} ???? ) {
...
}
指针类总是返回对象的指针:
指针类在MyStructS和MyClassC之间具有一对一的关系
MyClassC* myMethod () {
...
return this or getThisFrom(myStructS_pointer)
}
指针类的析构函数总是释放struct MyStructS 指针
~MqClassC () {
DestroyMyPointer(&hdl)
}
...
MyClassC* obj = new MyClassC(...);
...
delete obj;
...