gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:40:25 26 4
gpt4 key购买 nike

我正在尝试使用 Boost.Python 重载 C++ 类的运算符。

根据 this ,我的做法是正确的...但是我有一堆编译器错误。

这是我试图查明问题的一个简单示例:

#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());
}

这里是编译错误:

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

我是不是漏掉了什么?

谢谢

最佳答案

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

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

class_<X>("X")
.def(self + int())

与你的

class_<number>("number", init<int>())
.def(self() + int());

我想,selfself() 可以做到这一点。

关于c++ - 如何使用 Boost.Python 重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com