小编ize*_*zex的帖子

和一个班级交朋友

我正在尝试与一个类成为朋友,以便它能够到达它的私有构造函数.

在some_file.h中

class B;    

namespace some_name {
class A {
  public:
    A() {}
  private:
    A (int x) {}
    friend class ::B;
};
}
Run Code Online (Sandbox Code Playgroud)

在other_file.h中

#include "some_file"

namespace {
class B {
  protected:
    A* get_a(int x) { return new A(x); }
};   
}
Run Code Online (Sandbox Code Playgroud)

编译此代码时,我得到 - 错误:'some_name :: A :: A(int)'是私有的.

我现在,这是私人的,这就是我成为朋友的原因B.我在这里做错了什么?你不能和你的构造者成为朋友吗?是否有命名空间问题?

谢谢

c++ friend

1
推荐指数
1
解决办法
382
查看次数

标签 统计

c++ ×1

friend ×1