我几乎不了解C ++以及如何使用数组。话虽这么说,我要做的是为化学元素创建一个简单的类,它自动决定基于其原子序数分配给该元素的shell数。这是我的示例代码:
class Element {
int n, i;
int s = 1;
for (int i = 2; i < n; i += 8) {s += 1;}
int shell[s + 1];
public: Element(int n) {this.n = n;}
};
这段代码应该创建一个名为int shell[s + 1]
的数组,其中包含s-1 shell。我把它变成了s-1而不是s所以我不会经常把shell#1称为shell [0]等等来迷惑自己。因此,shell [0]未使用。或者我可以反过来实际使用shell [0],但那是无关紧要的。如您所见,int s
自动设置为1,因为所有元素都包含至少一个shell。然后有一个for循环,根据int n
添加shell。最后,我声明了数组int shell[s + 1]
。
最终,我遇到了很多错误。其中大多数是无意义的语法错误,但显然在C ++中你不允许初始化非最终实例变量。这对我来说没有多大意义,因为我真的需要int s
从1开始for for循环。它还告诉我,我也不能制作可变大小的数组。怎么办?
答案 0 :(得分:0)
您可以使用std::vector<int>
并在构造函数中初始化它:
class Element {
int s, n;
std::vector<int> shell;
public: Element(int n) : s(1), n(n) {
for (int i = 2; i < n; i += 8) {s += 1;}
shell.resize(s + 1);
}
};