我正在使用boost.python来制作用c ++编写的python模块。我有一些基类与纯虚函数,我已导出如下:
class Base
{
virtual int getPosition() = 0;
};
boost::python::class_<Base>("Base")
.def("GetPosition", boost::python::pure_virtual(&Base::getPosition));
Python中的我有代码:
class Test(Base):
def GetPosition(self):
return 404
Test obj
obj.GetPosition()
RuntimeError:名为
的纯虚函数
怎么了?
答案 0 :(得分:4)
当构造函数或析构函数直接或间接调用纯虚拟成员时,会发生此错误。
(请记住,在构造函数和析构函数执行期间,动态类型是构造/销毁类型,因此针对该类型解析虚拟成员。)
答案 1 :(得分:1)
“纯虚函数”是一个在基类中没有定义的函数。这意味着该基类的所有子类都将具有该函数的重写实现,但基类没有实现。
在您的示例中,看起来您正在调用一个纯虚函数,因此您正在调用一个声明的函数,但由于您没有调用任何子函数的实现,因此它没有定义。