0
我爲抽象基類編寫包裝類,基類有幾個純虛方法和一個重載運算符,如果我用重載運算符編譯我得到以下錯誤:Boost.Python包裝中的純虛擬重載運算符
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==))
;
編輯:我什至不知道這是做正確的方式,我沒有見過任何像這樣的例子在文檔中。
這是第一個問題,另一個是其中一個功能是一個常量成員,你讓我也意識到,所以非常感謝你:) – iabdalkader