我試圖總結其採用的模式是這樣一個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放在自己的類中會更簡單,並且會導致用戶更容易使用的類。 –