Mi manca uno dei punti migliori riguardo a emplace() e agli amici. Ecco un completo esempio minimo che riproduce il problema con g ++ 4.9.3:g ++ 4.9.3 si lamenta che CID amico è privato con .emplace_back(), ma likes .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;
};
Ho ripristinato la modifica. Si prega di non cambiare le vostre domande dopo aver ricevuto le risposte. Se hai una nuova domanda, pubblica una nuova domanda. – Barry