我不明白为什么下面的代码由于emplace_back的“错误”使用而无法编译。你能告诉我它有什么问题,以及我可以使用哪种解决方法?emplace_back on std :: vector
#include <vector>
class Test {
private:
std::size_t n_;
std::vector<double> a_;
std::vector<double> b_;
public:
Test(std::size_t n, std::initializer_list<std::size_t> list)
: n_(n), a_(list.begin()[0]), b_(list.begin()[1]){};
};
int main() {
Test t{5, {3, 4}};
std::vector<Test> v;
v.emplace_back(5, {3, 4});
return 0;
}
使用v.emplace_back(测试(5, {3,4}));将一个Test对象添加到矢量 – berendeanicolae
[OT]:如果初始化程序列表应该总是大小为2,则考虑使用std :: array或用两个参数替换 –
@piotr:这段代码显然是一个真正的代码。我比它更简单,我同意它看起来很愚蠢。 – InsideLoop