gpt4 book ai didi

c++ - Boost.Python - 参数化构造函数错误

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

我在文件 test.h 中有一个来自 tutorialspoint 的玩具类:

class Box {
public:

Box(int l, int b, int h)
{
length = l;
breadth = b;
height = h;
}

double getVolume(void) {
return length * breadth * height;
}
void setLength( double len ) {
length = len;
}
void setBreadth( double bre ) {
breadth = bre;
}
void setHeight( double hei ) {
height = hei;
}

private:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};

在我的另一个文件中:

BOOST_PYTHON_MODULE(test)
{
namespace python = boost::python;

python::class_<Box>("Box")
.def("setLength", &Box::setLength )
.def("setBreadth", &Box::setBreadth)
.def("setHeight", &Box::setHeight )
.def("getVolume", &Box::getVolume );
}

当我编译此代码时,我收到有关 Box 类构造函数的错误消息:

/usr/include/boost/python/object/value_holder.hpp:133:13: error: no matching function for call to ‘Box::Box()’
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
^

我错过了什么?

我需要在 BOOST_PYTHON_MODULE() 中编写构造函数参数吗?如果可以,怎么做?

最佳答案

您没有默认构造函数并且您缺少声明的构造函数:

BOOST_PYTHON_MODULE(test) {
namespace python = boost::python;

python::class_<Box>("Box", boost::python::init<int, int, int>())
.def("setLength", &Box::setLength )
.def("setBreadth", &Box::setBreadth)
.def("setHeight", &Box::setHeight )
.def("getVolume", &Box::getVolume );
}

关于c++ - Boost.Python - 参数化构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55511617/

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