首页 > 解决方案 > C++ 如何在其他类中创建类成员?

问题描述

当我尝试在类的私有部分创建类成员时,我得到“预期的类型说明符”。为什么它在 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);
}

标签: c++classsyntax

解决方案


您必须使用大括号而不是括号来进行成员初始化

非静态数据成员可以通过以下两种方式之一进行初始化:... 通过默认成员初始化程序,它只是包含在成员声明中的大括号或等号初始化程序,如果成员在成员初始化程序列表中被省略,则使用该初始化程序

你可以试试parantheses,int看看它也不起作用int


推荐阅读