【发布时间】:2013-12-04 13:37:29
【问题描述】:
我想在派生类(.h 或 .cpp 文件)中实现暴露模块。它工作正常,当我在一个 BOOST_PYTHON_MODULE 中的 main 中公开它时,但是当我在抽象类和派生类中以不同方式公开它时,它会出现错误一个或多个多重定义符号错误。示例代码如下。 p>
**Base.h**
class Base
{
public:
virtual void Set(const std::vector<std::string>& AllParameters) = 0;
};
struct BaseWrap : Base, wrapper<Base>
{
void Set(const std::vector<std::string>& AllParameters)
{
this->get_override("Set")(AllParameters);
}
**Base.cpp**
BOOST_PYTHON_MODULE(Example)
{
class_<Basewrapper , boost::noncopyable> ("Base")
.def("Set",pure_virtual(&Base::Set))
;
}
**Derived.h**
class Derived : public Base
{
public:
int test(int a, int b);
};
BOOST_PYTHON_MODULE(Example)
{
class_<Derived , boost::noncopyable> ("Derived")
.def("test",&Derived ::test)
;
}
**Derived.cpp**
void Derived:: test(int a , int b)
{
return a+b;
}
【问题讨论】:
标签: c++ abstract-class boost-python derived-class