我有以下结构:
struct A{};
struct B
{
B(std::shared_ptr<A> a, int x): a_(a), x_(x){}
std::shared_ptr<A> a_;
int x_;
};
struct C
{
C(std::vector<B> v, bool c){}
};
Run Code Online (Sandbox Code Playgroud)
我想将 C 类型的对象插入到向量中,但以下代码不起作用:
std::vector<C> vecC;
vecC.emplace_back({std::make_shared<A>(), 2}, false);
Run Code Online (Sandbox Code Playgroud)
或者,这种方式对以下内容没有意义emplace_back:
vecC.emplace_back(B{std::make_shared<A>(), 2}, false);
Run Code Online (Sandbox Code Playgroud)
我应该如何将 C 类型的对象插入到向量中?
您忘记了另一副大括号std::vector。另外,您需要告诉emplace_back()它传递什么类型的参数,因此您需要调用 的std::vector构造函数:
vecC.emplace_back(std::vector{ B{ std::make_shared<A>(), 2 } }, false);
Run Code Online (Sandbox Code Playgroud)
或者,不要使用emplace_back()并使用push_back():
vecC.push_back({{{std::make_shared<A>(), 2}}, false});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |