Как написать прототип конструктора для структуры в классе - PullRequest
0 голосов
/ 03 мая 2020

Я создал класс BST, и я столкнулся с проблемой при создании в нем конструктора структуры node.

class BST{
    private:
    struct node{
        int key;
        node* left;
        node* right;    
    };
    node* root;
    public:
        //constructor for BST
        BST();
        //constructor for node
        node(int x);
    };

Я получаю сообщение об ожидаемом безусловном идентификаторе перед 'int'.
Итак, я прочитал, что такое безусловный идентификатор, но не понял, зачем он здесь нужен.

1 Ответ

2 голосов
/ 03 мая 2020

Конструкторы для классов и структур должны быть объявлены в определении класса / структуры. Ваша версия этого не делает, так как node(int) объявлен вне класса node.

Измените код на следующий:

class BST
{
    private:
    struct node
    {
        int key;
        node* left;
        node* right;    
        node(int x);  
    };
    node* root;
    public:
        BST();
};

Тогда, если вы решите внедрить node конструктор вне класса BST:

BST::node::node(int x) 
{
   // code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...