1

请考虑以下部分代码:

//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 构造函数中发送引用以及如何解决它?

4

2 回答 2

4

您正在调用roadmap它,就好像它是一个函数或声明的operator(). 要初始化它,您必须使用成员初始化器列表的语法:

RRT::RRT(Configuration _init_conf, Limits _joint_limits)
    : roadmap(init_conf, _joint_limits);
{
}
于 2013-05-02T10:34:15.090 回答
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) {
}
于 2013-05-02T10:40:15.667 回答