在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);
^~~~~~~~~~~~~~

这是一个函数的声明:

vector <int> tops(numberOfStacks);
|            |   ||
|            |   |type of first parameter
|            |   parameter list
|            name of the function
return type

不能将此语法用于默认成员初始化程序。

在类成员声明时,您不会为它们指定构造函数参数。这是在类本身的构造器中完成的。

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及更高版本的一个功能,因此,如果使用旧版本的标准进行编译,则还需要在构造函数中指定这些成员。

最新更新