数组大小错误

时间:2014-12-13 21:06:52

标签: c++ arrays

这是我的代码:

标记的行给出了错误。

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
};

3 个答案:

答案 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     希望我能够提供帮助