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

时间:2019-11-21 21:27:11

标签: c++ vector sfml

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

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

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

1 个答案:

答案 0 :(得分:3)

根据文档:

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,第二个参数为count。反之亦然。所以改变:

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

收件人:

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

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