C++编译错误

标签 c++ compiler-errors

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

错误 C2027:使用了未定义的类型“B::C”

所以,归结为问题,h 文件看起来像这样

namespace A {
    void foo(B::C::SStruct const & Var);
}

SStruct 的定义在一个类中,该类在另一个 h 文件中,当然包含在内。

namespace B {
    class C {
        public:
        struct SStruct { };
    };
}

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

最佳答案

在更正丢失的分号等之后编译:

namespace B {
    class C {
        public:
        struct SStruct { };
    };
}
namespace A {
    void foo(B::C::SStruct const & Var);
}

显然,如果调换两个命名空间的顺序,这是行不通的。可能你的#including 标题顺序错误。如果这是错误,那就是糟糕的设计 - 您不应该让标题顺序影响您的代码。

关于C++编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722650/

相关文章:

asp.net - 编译错误: Server Error in '/' Application

c++ - RapidXML 奇怪的解析

c++ - 为什么 11==011 返回 false?

c++ - 如何使用智能指针从文件中读取数据 block ?

linux - gfortran 将 c 库与 conda 链接

android-studio - 无法解析 com.android.support.espresso :espresso-core:2. 2.2

c# - 如何在 Visual Studio 2015 中将 c# csproj 编译为 exe - 错误 CS0579

android - 通过QML Camera绘制Qt GUI元素

c++ - 构建 vector 的优先级队列

compiler-errors - 在Modelsim VHDL中编译