簡體   English   中英

嵌套名稱空間的不同級別中具有相同名稱的C ++朋友類

[英]C++ friend class of the same name in different levels of a nested namespace

不知道這是否可行,但是我在嵌套名稱空間的不同級別中有兩個同名的類,我想讓較淺的類成為較深類的朋友。 例:

在File1.h中:

namespace A
{
  class Foo
  {
    //stuff
  };
}

在File2.h中:

namespace A
{
  namespace B
  {
    class Foo
    {
      friend class A::Foo; //Visual Studio says "Error: 'Foo' is not a member of 'A'"
    };
  }
}

這可能嗎? 如果是這樣,正確的語法是什么?

將此代碼放在一個文件中時可以正常編譯(除了在A::B::Foo類之后需要;以外): IdeOne示例

因此,問題出在問題文本中未包含的代碼中。 可能#include "File1.h"File2.h被忘記了。

如果要避免將較大的頭文件包含到其他文件中,則至少需要在使用它們之前向前聲明您的類:

namespace A
{
  class Foo;

  namespace B
  {
    class Foo
    {
      friend class A::Foo;
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM