在类中定义数组的方法和字段
Defining methods and field of an Array in a class
我希望能够构建一个包含整数数组的类。我刚刚做了一个简单的代码,但它并没有打印数组的元素。代码已编译,但我没有任何结果。
#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;
}
相关文章:
- 使用同一类中的方法重新分配字段时出现问题
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 对象引用中的字段以不同的方法返回不同的值
- 在类中定义数组的方法和字段
- 有什么方法可以"factor out"公共字段以节省空间?
- 如何从具有多个对象/字段的类中调用方法函数
- C 将方法和字段带入外部范围,而无需明确的参考
- 使用静态方法初始化 const 类字段的做法是好是坏
- 从CSV文件中提取每个条目字段的最佳方法是什么
- 使用某些"specialized"字段调用继承的方法
- 修复警告"field a is not used"如果字段在配置中未使用的好方法
- 使用方法影响另一个对象的字段
- 调用方法,该方法修改字段,而使用该字段的另一个方法正在执行
- 安全的方法来为char []字段创建Getter
- 修改Boost多索引项的非索引字段的最佳方法:modify vs mutable
- C :初始化成员结构的静态字段的正确方法
- 为什么 c++ 中没有重复的 protobuf 字段的 Set 方法
- C++ - 有没有办法将字段\方法添加到使用"typedef"定义的类型?
- 类方法或字段
- 使用静态方法/字段 c++ 进行继承