Надеюсь, я понимаю ваш вопрос. Если вы объявите свой класс Python с shared_ptr
, как показано на http://wiki.python.org/moin/boost.python/PointersAndSmartPointers,, то boost::python
автоматически преобразует StatusEffect
объектов, которые вы создаете в Python, в shared_ptr<StatusEffect>
, если необходимо (вы можете попробовать это, например, .def
-ing функция, которая принимает const shared_ptr<StatusEffect>&
или shared_ptr<StatusEffect>
в качестве аргумента и вызывает ее с экземпляром StatusEffect
, созданным в python.
Если вы хотите назначить атрибут типа vector<shared_ptr<StatusEffect> >
, вы должны создать для него конвертеры (из последовательностей Python и обратно), как описано в документации. Например, см. Шаблон конвертера c ++ в python (строка 120), шаблон python в c ++ (строка 127), а затем используйте его для различных типов (включая shared_ptr), содержащихся в последовательностях (строка 212).
Тогда вы можете написать что-то вроде yourObject.listOfStatusEffects=[StatusEffect(),StatusEffect(),StatusEffect()]