有没有一种简单的方法可以在对象向量上调用构造函数?

Is there a simple way to call a constructor on a vector of objects?

我正在使用 SFML 用 C++ 编写一个小项目,我 运行 遇到了一个问题。我想画几行,我想在 运行 设置我的程序时更改它们的数量(我想要最多 50 行)。所以我想,我会使用 std::vector,但我需要在每一行对象上调用非默认构造函数,而且我找不到比在循环中执行它更简单的方法(我什至不知道我是否无论如何都应该这样做)。我试过这个:

std::vector<sf::VertexArray> lines(50, sf::VertexArray(2, sf::Lines));

但它不起作用。 (我可能是错的,这是 C++ 11 之前的事情?)。 我问如何做这样的事情(也在调整矢量大小时)或者我是否应该找到另一种存储这些行的方法?我正在使用 sf::VertexArray,因为我确实需要一条描述为 2 点的线,而不是矩形。

根据文档:

https://www.sfml-dev.org/documentation/2.5.1/classsf_1_1VertexArray.php#a4bb1c29a0e3354a035075899d84f02f9

VertexArray 的构造函数如下:

sf::VertexArray::VertexArray    (   PrimitiveType   type,
std::size_t     vertexCount = 0 
)   

所以第一个参数应该是 PrimitiveType,第二个是计数。你有相反的方式。所以改变:

std::vector<sf::VertexArray> lines(50, sf::VertexArray(2, sf::Lines));

至:

std::vector<sf::VertexArray> lines(50, sf::VertexArray(sf::Lines, 2));

否则你的代码看起来没问题。