数组类致命错误c ++

时间:2013-11-23 19:52:53

标签: arrays class

当尝试定义一个包含5个元素的数组的类,默认为零时,我收到以下错误

标头文件

class Array 
{ 
public:
Array (int =5);  //Initialize the array with 0 values

private:
int size;   // size of created array
int*  arr;
};

来源

#include<iostream>
#include"Array.h"
using namespace std;
Array::Array (int i)
{

arr = new int[5];
for(int j = 0; j<size; j++)
    *(arr + i) = 0;
}

驱动程序

#include<iostream>
#include"Array.h"
using namespace std;
void main()
{
Array a;
}

3 个答案:

答案 0 :(得分:0)

您没有初始化Array::size。在构造函数中使用它之前初始化Array::size

答案 1 :(得分:0)

首先,您没有提到错误是什么。它可以在这时编译吗?

其次,你似乎没有在你的构造函数中设置大小,因此没有任何设置(如@Oswald所说)

第三,你应该使用数组表示法。 EX:

arr[i]='\0'

第四,你通过你的循环改变变量。你初始化J,然后把它改成我。确保在整个

中使用相同的变量

答案 2 :(得分:0)

您的代码存在一些问题。

Array::Array (int i): size(i)  // <-- initialise size with i
{
    arr = new int[5]; //Should be: new int[size];
                  ^ 5?? How about using size that we receive as parameter??

    for(int j = 0; j<size; j++)
        *(arr + i) = 0;
                ^ Here is the problem. Use *(arr + j)!
}

其他问题:

  • 使用析构函数!您使用new进行分配,并且您方便地忘记了delete[]
  • void main()?使用int main() {...; return 0;}