我正在尝试创建一个 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
}
}
如果不需要多态行为,更好的方法是使用 obj
的 std::vector
,或者如果不需要多态行为,则使用指向 obj
的智能指针你需要多态行为。
关于多维动态数组中的 C++ 对象构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21882630/