不确定这是否可行,但我在嵌套命名空间的不同级别有两个相同名称的类,我想让更浅层的类成为更深层次的朋友。例如:
在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'"
};
}
}
这可能吗?如果是这样,那么正确的语法是什么?
答案 0 :(得分:0)
此代码放置在一个文件中时编译正常(;
课程后A::B::Foo
除外#include "File1.h"
除外}:IdeOne example。
因此,问题在于问题文本中未包含的代码。可能File2.h
中遗忘了UploadedFile file = (UploadedFile)valueChangeEvent.getNewValue();
byte[] fileByteArray = IOUtils.toByteArray(file.getInputStream());
。
答案 1 :(得分:0)
如果您想避免将大型头文件包含在其他文件中,您需要至少在使用之前声明您的类:
namespace A
{
class Foo;
namespace B
{
class Foo
{
friend class A::Foo;
}
}
}