2013-05-02 3 views
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 и как его решить?

ответ

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) { 
} 
4

Вы звоните roadmap, как если бы это была функция или объявлено operator(). Для того, чтобы инициализировать его, вы должны использовать синтаксис для списка Инициализатора члена:

RRT::RRT(Configuration _init_conf, Limits _joint_limits) 
    : roadmap(init_conf, _joint_limits); 
{ 
} 
Смежные вопросы