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

标签 c++ arrays 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;
}

关于c++ - 在类中定义数组的方法和字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58712573/

相关文章:

arrays - NSUserDefaults 在 tableview 中作为数组保存和读取

c - 如何根据它们的差异是否最接近给定数字来选择两个数字?

javascript - 在 JavaScript 中,如何访问父类(super class)实例的属性?

c++ - 在 C++ 中使用结构作为映射中的值

c++ - #include <winsqlite/winsqlite3.h> 在一个项目中工作,而不在另一个项目中工作

c++ - Eclipse C++ 内容辅助,自动激活

java - 如何将 int 数组作为单个 3 位输入读取?

php - 扩展 matomo/piwik 设备检测器类以添加新的客户端解析器(命名空间问题)

c++ - 类 "list"包含包含类的结构

c++ - 从 cpp 文件更改文本框