我希望能够构建一个类,其中我有一个整数数组。我刚刚编写了一个简单的代码,但它没有打印数组的元素。 代码编译,但我没有任何结果。
#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;
}
关于c++ - 在类中定义数组的方法和字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58712573/