【发布时间】:2017-08-22 12:25:52
【问题描述】:
我正在编写一些代码,我遇到了类似的情况:
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;
}
我宁愿拥有Bar 而不是Foo 的friend,因为除了Foos 构造函数Bar 不需要访问任何Foos 私有方法(因此不应该拥有使用权)。有没有办法只允许Bar 创建Foos 而不让他们成为朋友?
PS:意识到问题可能不是 100% 清楚。我不介意它是否通过朋友,只是所有Bar 都可以访问所有私有方法这一事实让我感到不安(friends 通常就是这种情况),这就是我想要避免的。幸运的是,到目前为止给出的答案都没有与这种糟糕的表述有问题。
【问题讨论】:
标签: c++ constructor private friend