c++ - 无法创建 array2d

标签 c++

我只想创建一个二维数组并为其赋值。我该如何解决? (我在评论中提到了错误。)

using namespace std;

class array{
    private:
        size_t m; //error: invalid use of non-static data member 'array::m'|
        size_t n; //error: invalid use of non-static data member 'array::n'|
        int array[m][n];  
    public:
        array():m(0),n(0){
        }
        array(const int &m,const int &n):m(m),n(n){
        }
        //method set array
        void setArray(){
            for (size_t row=0;row<m;row++){
                for(size_t col=0;col<n;col++){
         cin>>array[row][col]; //error: expected primary-expression before '[' token
                }
            }
        }


};

最佳答案

执行此操作的简单方法是使用 vector

#include <vector>
#include <iostream>

class array {
private:
    std::vector<std::vector<int>> array;

public:
    array() {
    }

    array(int m, int n) : array(m, vector<int>(n)) {
    }

    void setArray() {
        for (size_t row = 0; row < array.size(); row++) {
            for (size_t col = 0; col < array[row].size(); col++) {
               std::cin>>array[row][col];
            }
        }
    }
};

使用 vector 意味着您不必自己进行动态内存分配,从而使代码更安全、更易读。

关于c++ - 无法创建 array2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57071662/

相关文章:

c++ - 私有(private)变量编译错误: Variable is Private

c++ - 将二维数组(指针)分配给对象中的变量以便在 C++ 中访问?

c++ - 如何在 OS X 上使用 SDL2 编译 C++ 程序?

c++ - 编译器在什么阶段执行内联?

c++ - 用 cin 检测输入结束

c++ - 实例化模板时是否必须显式显示参数包中的类型?

c++ - 为什么此模板签名不能用作使用引号的字符串文字?

c++ - 如果线程是从 dll 创建的,std::async 是否会阻止进程退出?

c++ - 在 C++ 中如何在 arm 架构中检测 EOF

c++ - 在 C++ 中更改私有(private)原始变量的值