c++ - 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);
}
解决方案
您必须使用大括号而不是括号来进行成员初始化:
非静态数据成员可以通过以下两种方式之一进行初始化:... 通过默认成员初始化程序,它只是包含在成员声明中的大括号或等号初始化程序,如果成员在成员初始化程序列表中被省略,则使用该初始化程序
你可以试试parantheses,int
看看它也不起作用int
。
推荐阅读
- winforms - 在 PictureBox 中调整图像大小后,如何获得调整后的图像大小和位置?
- memory-leaks - 如何启用LSAN在运行时检测内存泄漏,而不是等到进程结束
- c# - 使用 JsonConvert.DeserializeObject 将 JSON 响应从后端转换为类型时出错
- micronaut - 调用存储过程 micronaut 数据
- sails.js - Sails 1.0 分组依据
- r - 闪亮的井板高度与其中的文字不同
- python-3.x - 与您自己的依赖项共享第三方依赖项的最佳实践
- c# - 如何获取项目 Excel 路径
- javascript - Typescript中对象的样式输出反应
- reactjs - 将 Material Ui 类名替换或添加到 React 数据表组件类名