相关疑难解决方法(0)

没有朋友授予访问私有构造函数的权限?

我正在编写一些代码,在那里我遇到了类似于这个的情况:

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不作为friendFoo,因为除了Foo构造函数Bar不需要访问任何的Foo私有方法(因此不应该有访问).有没有办法只允许Bar创建Foos而不让他们成为朋友?

PS:意识到问题可能不是100%清楚.我不介意它是否是通过朋友,只是所有人Bar都可以访问所有私人方法的事实令我感到不安(这通常是这种情况friends),这就是我想要避免的.幸运的是,到目前为止,没有一个答案与这个糟糕的表述有问题.

c++ constructor private friend

8
推荐指数
2
解决办法
385
查看次数

标签 统计

c++ ×1

constructor ×1

friend ×1

private ×1