Ich muss einen der feineren Punkte in Bezug auf emplace() und Freunde vermissen. Hier ist ein komplettes, minimales Beispiel, das das Problem mit g ++ 4.9.3 wiedergibt:g ++ 4.9.3 beschwert sich, dass friended ctor mit .emplace_back() privat ist, mag aber .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;
};
Ich rollte Ihre Bearbeitung zurück. Bitte ändere deine Fragen nicht, nachdem du Antworten erhalten hast. Wenn Sie eine neue Frage haben, geben Sie eine neue Frage ein. – Barry