C++ 如何使用Boost.Python重载运算符

C++ 如何使用Boost.Python重载运算符,c++,operator-overloading,boost-python,compiler-errors,C++,Operator Overloading,Boost Python,Compiler Errors,我试图用Booj.python .< /p >重载C++类的运算符。 据我所知,我是用正确的方法做的。。。但是我有很多编译器错误 下面是我试图找出问题的一个简单示例: #include "boost/python.hpp" using namespace boost::python; class number { public: number(int i) : m_Number(i) { } number operator+(int i) { return number(m_

我试图用Booj.python .< /p >重载C++类的运算符。 据我所知,我是用正确的方法做的。。。但是我有很多编译器错误

下面是我试图找出问题的一个简单示例:

#include "boost/python.hpp"

using namespace boost::python;

class number
{
public:
    number(int i) : m_Number(i) { }
    number operator+(int i) { return number(m_Number + i); }
private:
    int m_Number;
};

BOOST_PYTHON_MODULE(test)
{
    class_<number>("number", init<int>())
        .def(self() + int());
}
#包括“boost/python.hpp”
使用名称空间boost::python;
班号
{
公众:
数(int i):m_数(i){}
数运算符+(int i){返回数(m_数+i);}
私人:
整数m_数;
};
BOOST_PYTHON_模块(测试)
{
类(“编号”,init())
.def(self()+int());
}
以下是编译器错误:

Error   1   error C2064: term does not evaluate to a function taking 0 arguments    c:\users\kevin\documents\visual studio 2008\projects\boostpythontest\boostpythontest\test.cpp   16  BoostPythonTest
Error   2   error C2780: 'boost::python::class_<W> &boost::python::class_<W>::def(const char *,Fn,const A1 &,const A2 &,const A3 &)' : expects 5 arguments - 1 provided c:\users\kevin\documents\visual studio 2008\projects\boostpythontest\boostpythontest\test.cpp   16  BoostPythonTest
Error   3   error C2780: 'boost::python::class_<W> &boost::python::class_<W>::def(const char *,Fn,const A1 &,const A2 &)' : expects 4 arguments - 1 provided    c:\users\kevin\documents\visual studio 2008\projects\boostpythontest\boostpythontest\test.cpp   16  BoostPythonTest
Error   4   error C2780: 'boost::python::class_<W> &boost::python::class_<W>::def(const char *,A1,const A2 &)' : expects 3 arguments - 1 provided   c:\users\kevin\documents\visual studio 2008\projects\boostpythontest\boostpythontest\test.cpp   16  BoostPythonTest
Error   5   error C2780: 'boost::python::class_<W> &boost::python::class_<W>::def(const char *,F)' : expects 2 arguments - 1 provided   c:\users\kevin\documents\visual studio 2008\projects\boostpythontest\boostpythontest\test.cpp   16  BoostPythonTest
Error 1 Error C2064:term不计算为具有0个参数的函数c:\users\kevin\documents\visual studio 2008\projects\boostpythontest\boostpythontest\test.cpp 16 boostpythontest
错误2错误C2780:“boost::python::class_ython&boost::python::class_ython::def(const char*,Fn,const A1&,const A2&,const A3&”):需要5个参数-1个提供c:\users\kevin\documents\visual studio 2008\projects\boostythontest\boostythontest\test.cpp 16 boostythontest
错误3错误C2780:“boost::python::class_ython::boost::python::class_ython::def(const char*,Fn,const A1&,const A2&”):需要4个参数-1个提供c:\users\kevin\documents\visual studio 2008\projects\boostythontest\boostythontest.cpp 16 boostythontest
错误4错误C2780:“boost::python::class_&boost::python::class_::def(const char*,A1,const A2&”):需要3个参数-1个提供c:\users\kevin\documents\visual studio 2008\projects\boostythontest\boostythontest\test.cpp 16 boostythontest
错误5错误C2780:'boost::python::class_wk&boost::python::class_wk::def(const char*,F)':需要2个参数-1个提供c:\users\kevin\documents\visual studio 2008\projects\boostythontest\boostythontest\test.cpp 16 boostythontest
我是不是遗漏了什么


谢谢

我没有使用boost.python,但是当某个模板魔术试图将某个东西绑定到其他东西时,您的错误看起来像是存在一些不兼容的参数

因此,我查看了您提供的链接,发现了一个主要区别:

class_<X>("X")
    .def(self + int())
class_ux“
.def(self+int())
对你的

class_<number>("number", init<int>())
    .def(self() + int());
类(“数字”,init())
.def(self()+int());
我想,
self
self()