[英]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.