Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数组类致命错误c++;_Arrays_Class - Fatal编程技术网

Arrays 数组类致命错误c++;

Arrays 数组类致命错误c++;,arrays,class,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

当试图定义一个包含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;
}
#包括
#包括“Array.h”
使用名称空间std;
数组::数组(int i)
{
arr=新整数[5];

对于(int j=0;j在构造函数中使用它之前,您不需要初始化
Array::size
。初始化
Array::size

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

其次,您似乎没有在那里设置构造函数的大小,因此那里不会设置任何内容(正如@Oswald所说)

第三,应该使用数组表示法。例如:

arr[i]='\0'

第四,在循环中更改变量。初始化J,然后将其更改为I。确保在整个过程中使用相同的变量。代码中有几个问题

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)!
}

Array::Array(int i):size(i)//您有什么错误?您好!非常感谢您的回复,但我发现了我的错误。我知道一旦我发现它,它将是一个愚蠢的东西,事实就是。我的驱动程序是一个.h文件,而不是.cpp。很抱歉占用您的时间。
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)!
}