c ++编译错误

cla*_*amp 0 c++ compiler-errors

我有一个编译错误,我不明白.我有ah/cpp文件组合,它不包含类,但只定义了一些实用程序函数.当我尝试使用在另一个类中定义的结构时,我得到错误:

错误C2027:使用未定义类型'B :: C'

所以,根据问题,h文件看起来像这样

namespace A {
    void foo(B::C::SStruct const & Var);
}
Run Code Online (Sandbox Code Playgroud)

SStruct的定义属于另一个h文件中的类,当然也包括在内.

namespace B {
    class C {
        public:
        struct SStruct { };
    };
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我可以在其他类中使用这个结构,它似乎与这个只包含实用函数的h文件有关.我在这里失踪了什么?谢谢!

小智 5

在纠正丢失的分号等之后,这将编译:

namespace B {
    class C {
        public:
        struct SStruct { };
    };
}
namespace A {
    void foo(B::C::SStruct const & Var);
}
Run Code Online (Sandbox Code Playgroud)

显然,如果切换了两个名称空间的顺序,这将不起作用.可能你是#including你的标题错误的顺序.如果这是错误,这是糟糕的设计 - 您不应该在您的代码中允许标题顺序.