当我试图在一个类的私有部分中创建一个类成员时,我得到“期望的类型说明符”。为什么它在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);
}
答案 0 :(得分:0)
对于成员initialization,您必须使用括号代替括号:
可以用以下两种方法之一初始化非静态数据成员:... 通过默认的成员初始化程序仅仅是 brace 或 等于成员声明中包含的初始化器, 如果成员初始化程序列表中省略了该成员
您可以尝试使用int
进行寄生,并发现它也不适用于int
。