Я пытаюсь обернуть библиотеку 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»).
Проблема в том, что еслиЯ включаю Thing как элемент CXXThing, тогда я не знаю, как бы я объявил конструктор, и если я добавлю указатель на обернутый класс, то у меня будет дополнительный уровень бесполезногокосвенное.
Как мне обернуть его, чтобы это было возможно?(Ответ «То, что вы хотите сделать, не самый лучший / возможный ... вот правильный путь» также приемлем.)