当尝试定义一个包含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;
}
答案 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;}