多维动态数组中的 C++ 对象构造

标签 c++ arrays matrix multidimensional-array dynamic-arrays

我正在尝试创建一个 nxn 对象数组,但我不知道在哪里调用它们的构造函数。这是我的代码:

class obj {
  private: int x;
  public:  obj( int _x ) { x = _x; }
};

int main( int argc, const char* argv[] ) {

  int n = 3; //matrix size    

  obj** matrix = new obj*[n];
  for( int i = 0; i < n; i++ )
    matrix[i] = new obj[n];

  return 0;
}

最佳答案

如果只需要调用默认构造函数,那么您的代码已经调用了它。

对于非默认构造函数添加一个嵌套循环,如下所示:

for( int i = 0; i < n; i++ ) {
    matrix[i] = new obj[n];
    for (int j = 0 ; j != n ; j++) {
        matrix[i][j] = obj(arg1, arg2, arg3); // Non-default constructor
    }
}

如果不需要多态行为,更好的方法是使用 objstd::vector,或者如果不需要多态行为,则使用指向 obj 的智能指针你需要多态行为。

关于多维动态数组中的 C++ 对象构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21882630/

相关文章:

c++ - 我可以使用指针表示多维数组吗?

arrays - 如何索引数组中的字符串?

javascript - 使用每个数组中的一个值来转换和连接多个数组

r - 从 3 个不同大小的输入矩阵构建所有可能的 3 列矩阵

c++ - 读取硬盘扇区原始数据 - 为什么是十六进制?

c++ - 当您声明 "pointer type"形式(函数)参数 "like an const array"时,const 是什么?

c++ - 如何从 QByteArray 组织或提取信息

java - 如何使用流将 2 个 double[][] 矩阵相乘?

python - 获取如下所示的 25x2 数组(带有坐标的排序列表)

c++ - 为什么这会导致 Mac 上的无限循环?