我试图总结其采用的模式是这样一个C库:C++包装C结构*和*和功能
Thing* x= new_thing_("blah");
Thing* tmp= thing_copy(x);
free_thing(tmp);
Other* y=get_other(x,7);
char* message=get_message(x,y);
free_thing(x);
free_other(y);
在C++中,我希望能够做到像
auto_ptr<CXXThing> x=new CXXThing("blah");
auto_ptr<CXXThing> tmp=new CXXThing(*x);
auto_ptr<CXXOther> y=x->get_other(7);
char* message = y->get_message();
显然,CXXOther也包装了一个指向CXXThing的指针。所以我遇到的问题是,我基本上只想将功能和成员“插入”现有结构(我认为这被称为“Mixin”思路)。
的问题是,如果我有一个东西作为CXXThing的一个元素,那么我不知道怎么我声明构造,如果我包括指针到被包装类的话,我有额外的无用间接。
我该如何包装它才能做到这一点? (“你想做什么不是最好的/可能的......这是正确的方式”的答案也是可接受的。)
I可能是错误的,但我的印象是,您可能会返回auto_ptrs来表达传输对象的所有权(http://www.gotw.ca/publications/using_auto_ptr_effectively.htm) –
这完全正确。但是,对于上述情况,将Thing和Other放在自己的类中会更简单,并且会导致用户更容易使用的类。 –