请考虑以下部分代码:
//Tree.h
class Tree {
private:
Limits joint_limits;
public:
Tree();
Tree(Configuration root, const Limits& _joint_limits);
~Tree();
//the rest of the class
第二个头文件:
//RRT.h
class RRT {
private:
Tree roadmap;
public:
~RRT();
RRT();
RRT(Configuration _init_conf, Limits _joint_limits);
//the rest of the class
在RRT
构造函数中,我有这行代码:
RRT::RRT(Configuration _init_conf, Limits _joint_limits) {
roadmap(init_conf, _joint_limits);
}
当我尝试编译它时,我有以下错误:
no match for call to ‘(Tree) (Configuration&, Limits&)’
为什么g++
认为我在RRT构造函数中发送引用以及如何解决它?
答案 0 :(得分:4)
您正在调用roadmap
,就像它是一个函数或声明operator()
一样。要初始化它,您必须使用成员初始化列表的语法:
RRT::RRT(Configuration _init_conf, Limits _joint_limits)
: roadmap(init_conf, _joint_limits);
{
}
答案 1 :(得分:1)
在您的代码中,您尝试调用名为roadmap
或其operator ()
的函数。
可能这是一个错误。 你可以这样做:
RRT::RRT(Configuration _init_conf, Limits _joint_limits) {
roadmap = Tree(init_conf, _joint_limits);
}
或
RRT::RRT(Configuration _init_conf, Limits _joint_limits)
: roadmap(init_conf, _joint_limits) {
}