c++ - 在 C++ 类中声明可变大小的数组/向量
问题描述
我想在 C++ 类中声明一个可变大小(不是真正的可变大小)数组/向量,我遇到了奇怪的错误。我试图找到解决方案,但无法解决错误。C++ 诸神,保佑我。
class threeStack{
private:
int numberOfStacks = 3;
int sizeOfEachStack = 2;
int kc = 10;
vector <int> a(numberOfStacks * sizeOfEachStack);
vector <int> tops(numberOfStacks);
};
错误
vector <int> a(numberOfStacks * sizeOfEachStack);
^~~~~~~~~~~~~~
main.cpp:10:27: error: ‘numberOfStacks’ is not a type
vector <int> tops(numberOfStacks);
^~~~~~~~~~~~~~
解决方案
在声明类成员时,您没有为它们指定构造函数参数。这是在类本身的构造函数中完成的。
class threeStack{
private:
int numberOfStacks;
int sizeOfEachStack;
int kc;
vector <int> a;
vector <int> tops;
public:
threeStack() : numberOfStacks(3), sizeOfEachStack(2),
kc(10), a(3 * 2), tops(3) {
}
threeStack(int numberOfStacks, int sizeOfEachStack) :
numberOfStacks(numberOfStacks),
sizeOfEachStack(sizeOfEachStack),
kc(10),
a(numberOfStacks * sizeOfEachStack),
tops(sizeOfEachStack)
{
}
};
此外,数据成员的默认初始化是 C++11 及更高版本的一项功能,因此如果您使用旧版本的标准进行编译,您还需要在构造函数中指定这些。
推荐阅读
- ruby-on-rails - 嵌套属性并在一个控制器(父控制器)中创建两个独立模型的实例
- typescript - 在 typescript 中避免接口重复解析 JSON
- c# - 代码并不总是突出显示富文本框中的选定文本
- javascript - React 应用程序和 Laravel API 的 CORS 问题
- flutter - 异常:ideviceinfo 返回错误:错误:无法连接到锁定,错误代码 -17
- unity3d - AudioListener.pause = true 后暂停菜单音乐;
- java - 如何在没有小时的情况下解析 HH:mm:ss?
- html - 使剪辑路径与可拖动图像一起使用
- java - 避免方法调用 getLatitude 可能产生 java.Lang.NullPointerException
- javascript - JS:303后重定向查看其他