C ++ Как мне создать членов класса в других классах? - PullRequest
0 голосов
/ 20 октября 2019

Когда я пытаюсь создать член класса в закрытом разделе класса, я получаю «ожидаемый спецификатор типа». Почему в частном разделе WordCount Class возникает такая ошибка, но внутри main () это нормально?

#include <iostream>

using namespace std;

template <class T>
struct AVLNode
{
    T element; //later might want to make this a T
    AVLNode* left;
    AVLNode* right;
    int height;

    //Constructor:
    AVLNode(T theElement, AVLNode<T>* lt, AVLNode<T>* rt, int ht = 0) //ht is short for height
        : element(theElement), left(lt), right(rt), height(ht) {}
};

template <class T>
class AVLTree
{
protected:
    AVLNode<T>* root = NULL;
    const T ITEM_NOT_FOUND;

public:
    AVLTree<T>(T notFound)
        : ITEM_NOT_FOUND(notFound), root(NULL) {}
};

class WordCount
{
private:
    AVLTree<int> tree(0); //Error
};

int main()
{
    AVLTree<int> avl(0);
}

1 Ответ

0 голосов
/ 20 октября 2019

Вы должны использовать скобки вместо паратезов для элемента инициализация :

Нестатические элементы данных могут быть инициализированы одним из двух способов: ... через значение по умолчаниюинициализатор члена, , который является просто фигурной скобкой или равен инициализатору, включенному в объявление члена, , который используется, если член отсутствует в списке инициализатора члена

Вы можете попробовать парантезы с int и увидеть, что это не работает и для int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...