C ++如何在其他类中创建类成员?

时间:2019-10-20 16:56:10

标签: c++ class syntax

当我试图在一个类的私有部分中创建一个类成员时,我得到“期望的类型说明符”。为什么它在WordCount类的私有部分中会出现这样的错误,但是在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 :(得分:0)

对于成员initialization,您必须使用括号代替括号:

  

可以用以下两种方法之一初始化非静态数据成员:...   通过默认的成员初始化程序仅仅是 brace 或   等于成员声明中包含的初始化器,   如果成员初始化程序列表中省略了该成员

您可以尝试使用int进行寄生,并发现它也不适用于int