【问题标题】:How to declare a friend that is a member function of another not yet defined class in C++?如何声明一个朋友,它是另一个尚未在 C++ 中定义的类的成员函数?
【发布时间】:2010-12-04 20:26:17
【问题描述】:

我如何声明 B 的构造函数是 A 的朋友?我试过了:

class A
{
  private:
   A();
  public:
   friend B::B();
};

class B
{
  public:
    B();
};

【问题讨论】:

  • 刚刚编辑它,所以它不会被关闭。有些人在那里触发了快乐的闭幕式——请给潜在的非母语人士或新手一些松懈。 @IamMan,欢迎来到 StackOverflow - 尝试使问题清晰并正确缩进代码,否则如果我们很多人不理解它,问题就会被关闭。此外,如果有人正确回答了问题,请单击它左侧的复选标记以表明它是正确的答案。

标签: c++ constructor friend member-functions incomplete-type


【解决方案1】:

B::替换为class

class A
{
private:
    A();
public:
   friend class B;
};

class B
{
public:
    B();
};

【讨论】:

  • 这个答案实际上让所有 B 成为朋友。这可能是 OP 想要的,但不是他们要求的。他们要求的是不可能的。应该让其他寻找此问题答案的人知道。
  • 是的。应该修改此答案,以明确该建议与问题所要求的不完全一致——因为问题想要的内容是不可能的。如果有人要应用此答案,他们可能不会仔细考虑他们授予的访问权限比原始问题所要求的更广泛的事实。 (将这个想法发挥到极致:另一种解决方案是让 A 的私有成员公开。这也将授予所需的访问权限,但同样,它授予的访问权限比 OP 所寻找的要多得多,这应该指出来。)
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多