【发布时间】:2019-03-02 21:08:08
【问题描述】:
我有 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!")
【问题讨论】: