我必須缺少關於emplace()和朋友的更好的一點。下面是使用g ++ 4.9.3再現該問題的完整,最小的例如:g ++ 4.9.3抱怨說好友ctor與.emplace_back()私有,但喜歡.push_back()
class Foo
{
public:
class Bar
{
private:
friend class Foo;
Bar(Foo &foo) : foo(foo) {}
Foo &foo;
};
Bar &getBar()
{
//bars.push_back(*this); // works fine
bars.emplace_back(*this); // Foo::Bar::Bar(Foo&) is private
return bars.back();
}
private:
std::vector<Bar> bars;
};
我回滾了你的編輯。收到答案後請不要改變你的問題。如果您有新問題,請發佈新問題。 – Barry