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