Чистый вызов виртуальной функции

Я использую boost.python для создания python-модулей, написанных на c ++. У меня есть базовый класс с чистыми виртуальными функциями, которые я экспортировал следующим образом:

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: Чистая виртуальная функция, называемая

Что не так?

2 Solutions collect form web for “Чистый вызов виртуальной функции”

Эта ошибка возникает, когда конструктор или деструктор прямо или косвенно вызывает чистый виртуальный элемент.

(Помните, что во время выполнения конструктора и деструктора динамический тип является построенным / разрушенным типом, поэтому виртуальные члены разрешаются для этого типа).

«Чистая виртуальная функция» – это функция, которая не имеет определения в базовом классе. Это означает, что все дочерние элементы этого базового класса будут иметь переопределенную реализацию этой функции, но базовый класс не имеет реализации.

В вашем примере, похоже, вы вызываете чистую виртуальную функцию, поэтому вы вызываете объявленную функцию, но поскольку вы не вызываете реализацию какого-либо ребенка, у нее нет определения.

Python - лучший язык программирования в мире.