【发布时间】:2012-06-12 19:25:40
【问题描述】:
我正在为抽象基类编写一个包装类,该基类有几个纯虚方法和一个重载运算符,如果我使用重载运算符进行编译,则会收到以下错误:
cannot allocate an object of abstract type
即使我在包装类中实现了重载运算符,但不知何故 Boost.Python 仍然坚持认为它没有实现,有什么线索吗?
这是我的代码的样子:
//abstract base class
class Test
{
public:
virtual void start() = 0;
virtual void stop() = 0;
virtual bool operator==(const Test rhs) = 0;
};
//wrapper class
struct TestWrapper: Test, wrapper<Test>
{
public:
void start()
{
this->get_override("start")();
}
void stop()
{
this->get_override("stop")();
}
bool operator==(const Test& rhs)
{
return this->get_override("operator==")(rhs);
}
};
//boost python module
class_<TestWrapper, boost::noncopyable>("Test")
.def("start", pure_virtual(&Test::start) )
.def("stop", pure_virtual(&Test::stop) )
.def("operator==", pure_virtual(&Test::operator==))
;
编辑:我什至不确定这是执行此操作的正确方法,我在文档中没有看到任何类似的示例。
【问题讨论】:
标签: c++ boost boost-python