Как вызвать конструктор для класса внутри другого класса? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть класс first, в котором я хочу иметь другой элемент, тип которого - другой класс. Как то так:

class first{

private:

    second secondAvl;
public:

    first():second(-1){}  // i get erroe here
} 

class second: public Tree{

private:

public:
 second(int key) :Tree(NULL,key1){} // here it worked to call contructor for tree
}

Моя проблема в том, что когда я пытаюсь вызвать конструктор для второго в классе первого конструктора, я получаю эту ошибку:

нет соответствующей функции для вызова 'second :: second ()'

Любая помощь, что я делаю не так? Потому что я сделал то же самое, когда вызвал конструктор для дерева во втором классе, и это сработало нормально.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

сделать вместо:

...

private:

    second secondAvl;
public:

    first() : secondAvl(-1)
    { }  
}

или равномерная инициализация с помощью {}

...

private:

    second secondAvl;
public:

    first() : secondAvl{-1}
    { }  
}
0 голосов
/ 15 мая 2018

Во-первых, в порядке определения классов класс second неизвестен в то время, когда он используется в first.Вы должны получить другие сообщения об ошибках.Во-вторых, в списке инициализатора вам нужно обратиться к переменной для инициализации по ее имени (то есть : secondAvl(-1)), а не по ее типу : second(-1).

См. Следующий рабочий пример:

class second {

private:

public:
    second(int key) {} // here it worked to call contructor for tree
};


class first{

private:

    second secondAvl;
public:

    first():secondAvl(-1){}  // i get erroe here
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...