Conceder acesso ao construtor privado sem amigos?
Estou trabalhando em algum código, onde encontrei uma situação semelhante a esta:
struct Bar;
struct Foo{
friend struct Bar;
private:
Foo(){}
void f(){}
void g(){}
};
struct Bar {
Foo* f;
Bar() { f = new Foo();}
~Bar() { delete f;}
};
int main(){
Bar b;
}
Eu preferiria terBar
não tãofriend
doFoo
porque alémFoo
s construtorBar
não precisa acessar nenhumFoo
s métodos privados (e, portanto, não devem ter acesso). Existe uma maneira de permitir apenasBar
para criarFoo
s sem torná-los amigos?
PS: percebeu que a pergunta pode não estar 100% clara. Eu não me importo se é através de amigos ou não, apenas o fato de que todosBar
O acesso a todos os métodos privados está me perturbando (o que geralmente acontece comfriends
) e é isso que eu quero evitar. Felizmente, nenhuma das respostas dadas até agora teve um problema com essa péssima formulação.