请考虑以下部分代码:
//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构造函数中发送引用,以及如何解决它?
发布于 2013-05-02 18:40:16
在您的代码中,您试图调用一个名为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-02 18:34:15
您正在调用roadmap,就好像它是一个函数或声明的operator()。要对其进行初始化,必须使用成员初始化器列表的语法:
RRT::RRT(Configuration _init_conf, Limits _joint_limits)
: roadmap(init_conf, _joint_limits);
{
}https://stackoverflow.com/questions/16335708
复制相似问题