在类中定义数组的方法和字段

Defining methods and field of an Array in a class

本文关键字:方法 字段 数组 定义      更新时间:2023-10-16

我希望能够构建一个包含整数数组的类。我刚刚做了一个简单的代码,但它并没有打印数组的元素。代码已编译,但我没有任何结果。

#include <iostream>
using namespace std;
const int len = 5;
class TrialArray {
protected:
int len;
int A[];
public:
TrialArray() {
for (int i=0; i<this->len; i=i+1) {
this->A[i] = i;
}
}
void print() {
for (int i=0; i<this->len; i=i+1) {
std::cout << this->A[i] << 't';
}
}
};
int main() {
TrialArray A;
A.print();
return 0;
}

这是一个简单的代码。总的来说,我有一个方法A.print(),它应该打印值,在这种情况下是0,1,2,3,4,但它不是。我不明白自己哪里做错了。

您在构造函数中引用的是this->len变量,而不是全局静态len

此外,您还没有指定数组的大小。

您需要更改代码以正确引用全局变量。更好的方法是在构造函数中提供TrialArray的大小。

int A[]更改为int *A,并使用new动态分配。将给定给构造函数的大小存储在this->len中,然后像您所做的那样填充数组。

像这样:

#include <iostream>
using namespace std;
class TrialArray
{
protected:
int len;
int *A;
public:
TrialArray(int size)
{
A = new int[size];
this->len = size;
for (int i=0; i<this->len; i=i+1)
{
this->A[i] = i;
}
}
void print() {
for (int i=0; i<this->len; i=i+1)
{
std::cout << this->A[i] << 't';
}
}
};
int main()
{
TrialArray A(5);
A.print();
return 0;
}