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

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

本文关键字:对象 向量 构造函数 调用 方法 一种 简单 有没有      更新时间:2023-10-16

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

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

但它不起作用。(我可能错了,直到 11 C++才发生? 我问如何做这样的事情(也在调整矢量大小时(,或者我应该找到另一种存储这些行的方法?我正在使用 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 
)   

所以第一个参数应该是基元类型,第二个参数是计数。你反过来也有它。所以改变:

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

自:

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

否则,您的代码看起来不错。