我正在编写一些代码,在那里我遇到了类似于这个的情况:
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;
}
Run Code Online (Sandbox Code Playgroud)
我宁愿Bar不作为friend的Foo,因为除了Foo构造函数Bar不需要访问任何的Foo私有方法(因此不应该有访问).有没有办法只允许Bar创建Foos而不让他们成为朋友?
PS:意识到问题可能不是100%清楚.我不介意它是否是通过朋友,只是所有人Bar都可以访问所有私人方法的事实令我感到不安(这通常是这种情况friends),这就是我想要避免的.幸运的是,到目前为止,没有一个答案与这个糟糕的表述有问题.