c ++中的空动态数组

sig*_*sen 1 c++ dynamic-arrays

假设我有一个Square使用构造函数调用的对象Square(int rx, int ry),我想创建一个Squares的动态数组,在构造函数中使用不同的参数:

Square *squares = new Square[10];  
for (int i = 0; i < 10; i++)
{
     squares[i] = new Square(i, i);
}
Run Code Online (Sandbox Code Playgroud)

但是这失败了,说没有合适的默认构造函数可用.那么,如何建立一个空或空数组,然后做结构

编辑:由于代码中的其他内容,这必须是一个数组,这里很难解释.

ybu*_*ill 7

使用vector.只要是Square可复制的,它就没有这个问题.

vector<Square> squares;
for (int i = 0; i < 10; i++)
{
     squares.push_back(Square(i, i));
}
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 5

你可以做的数组的指针Square:

Square **squares = new Square*[10];

for (int i = 0; i < 10; i++)
{
     squares[i] = new Square(i, i);
}
Run Code Online (Sandbox Code Playgroud)

正如其他人所指出的那样,考虑使用它是一个好主意std::vector.

  • @ecik - 指针数组永远不是正确的方法.:-)一个空的std :: vector会这样做. (3认同)