У меня есть кусок кода C++, что я пытаюсь обернуть с помощью наддува питона, который выглядит примерно так:подталкивание питона и шаблоны
заголовочного файла:
template<class CatalogClass, class MemberClass>
class MyIterator
{
public:
MyIterator(SomeOtherArg& arg);
private:
Blah<CatalogClass,MemberClass>* mIterator;
каст файла:
template<class CatalogClass, class MemberClass>
MyIterator<CatalogClass, MemberClass>::MyIterator(SomeOtherArg& arg)
{
mIterator = new Blah<CatalogClass,MemberClass>(arg);
}
подталкивания каст:
class_<MyIterator<CatalogClass,MemberClass>>("MyIterator", init<SomeOtherArg&>())
;
Моя причина для параметризации заключается в том, что MyIterator может использоваться различными классами, и поэтому мне не нужно переписывать этот итератор для каждого класса, который происходит из CatalogClass/MemberClass. Тем не менее, я получаю сообщение об ошибке на компиляции/связывания, который говорит:
Undefined symbols for architecture x86_64: MyIterator<CatalogClass,MemberClass>::MyIterator(SomeOtherArg&): referenced from boost::python::objects::value_holder<MyIterator<CatalogClass, MemberClass> >::value_holder<boost::python::objects::reference_to_value<SomeOtherArg&> >(_object*, boost::python::objects::reference_to_value<SomeOtherArg&>) in Test.o
Где еще ждет меня, чтобы определить это? Благодаря!