У меня есть 2 класса ("Foo", "Bar"), которые являются производными от базового класса "Base", как показано ниже.
class Base{
public:
virtual void basemethod() = 0 ;
};
class Base: public Foo{
virtual void basemethod() ;
void foo();
};
class Base: public Bar{
virtual void basemethod() ;
void bar();
};
И есть другой класс, который создает экземпляры этих классов, как показано ниже
class Entity{
std::vector<std::shared_ptr<Base> > Get();
};
У меня есть ниже файл idl, но в этом случае, в коде Python, я не могу получить доступ к информации о реальном типе
%include "std_vector.i"
%include <std_shared_ptr.i>
%template(MyVector) std::vector<std::shared_ptr<Base> >;
Можно ли обернуть этот интерфейс в Swig так нижекод на python работает как положено?
entity = Entity()
vec = entity.Get()
if isinstance(vec[0], Bar):
print("this is a Bar!")
if isinstance(vec[1], Foo):
print("this is a Foo!")