传递参数的g ++问题

时间:2013-05-02 10:27:08

标签: c++ g++ pass-by-reference

请考虑以下部分代码:

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

2 个答案:

答案 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) {
}