我正在使用SFML在C ++中编写一个小项目,但遇到了问题。我想画几条线,我想在运行程序时更改它们的数量(我希望最多50条线)。所以我想,我会使用std :: vector,但是我需要在每个线对象上调用非默认构造函数,而且我找不到比在循环中做更简单的方法了(我什至不知道是否应该还是这样做)。我尝试过:
std::vector<sf::VertexArray> lines(50, sf::VertexArray(2, sf::Lines));
但是它不起作用。 (我可能是错的,直到C ++ 11才是问题?)。 我问如何做这样的事情(在调整向量大小时)还是应该找到另一种存储这些行的方法?我使用的是sf :: VertexArray,因为我确实需要一条描述为2点而不是矩形的线。
答案 0 :(得分:3)
根据文档:
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));
否则,您的代码看起来不错。