这是我的代码:
标记的行给出了错误。
class Student{
public:
//Student(string x, int y, string z[]);
void getinfo();
void printinfo();
private:
string name;
int numClasses;
string arr[numClasses]; // the error is here it's not allowing me to put numClasses as the size of
// the class
};
答案 0 :(得分:2)
数组的大小必须是常量整数表达式
您可以这样做:
class Student
{
public:
void getinfo();
void printinfo();
private:
string name;
static const int numClasses = 20;
string arr[numClasses];
};
答案 1 :(得分:0)
因为,数组将在编译时分配,因此当大小不是常量时,编译器无法准确确定其值并抛出错误。
如果你想使用动态大小的数组,请使用vector。
下面,
1)将大小更改为const
2)或者,使用矢量 - &gt; vector<string>arr;
答案 2 :(得分:0)
数组应该是常量,这是一些可以帮助我在cpp网站找到的解释
括号[]内的元素字段,表示数字 数组将保持的元素,必须是一个常量值,因为 数组是非动态内存块,其大小必须确定 在执行之前。为了创建具有可变长度的数组 需要动态内存
因为您已经得到了答案,所以我将包含有关其他人可能会受益的阵列的重要信息。
用c ++正确的方式来声明一个10个整数的数组,例如可以这样做
int array[10];
如果您知道数组中您想要的值,那么就可以这样做
int numbers [] = {13, 30, 50, 2, 5, 6, 70, 8, 9, 10};
“指针算术”&amp;常规算术 指针算术是一种表达评估的方式,它使用2个堆栈,一个用于字符,一个用于数字,例如指针算术使用*(a + 1)“其中常规算术使用”a [i]“ 两者都是一样的 我的一位教授谈了很多关于阵列的事情
and say array[i] = *(a+i)
what does that mean?
it basically means
if a[i] = a[0]
then in pointer arithmetic it is :
*(a+0);
and if a[i] = a[1]
then in pointer arithmetic it is :
*(a+1); and so on
基本上我分享了大约两周的数据结构课程:P 希望我能够提供帮助