缺少具有类型的静态函数的类型说明符

时间:2016-01-01 11:38:43

标签: c++

我的问题涉及三个文件以及它们之间的关系: 在一个文件中,我有一堆预定义类型,例如Uintint32等。 在另外两个中,我有一个类,用于对异常(主要是静态函数)和类的定义进行分类。

所有类型都在文件Types.h中,其中包含一个允许全局定义类型的宏:

namespace Enigma {
    //Omitted Types
    typedef std::uint32_t Uint32;
    typedef std::string   string;
    //Omitted Types
}
#if defined(USING_GLOBAL_TYPES)
using namespace aNamespace;
#endif

在其他文件中我有以下内容(或者与之类似):

标题文件:

#include "Types.h"

namespace Enigma {
class ExceptionCategory {
    typedef Uint32 CategoryID;

    static CategoryID GetIDFromName(const string& name) noexcept;
};
}

源文件:

Engima::ExceptionCategory::CategoryID Enigma::ExceptionCategory::GetIDFromName(const string& name) noexcept {
//Omitted Code
}

现在根据编译器向我投掷的错误消息,问题在于Source文件,其中包括以下内容:

  

错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int

     

错误C2143:语法错误:缺少','之前'&'

     

错误C2511:' Enigma :: ExceptionCategory :: IDType Enigma :: ExceptionCategory :: GetIDFromName(const int)noexcept':在'Enigma :: ExceptionCategory'中未找到重载的成员函数

编辑:主要重写

2 个答案:

答案 0 :(得分:1)

在cpp文件中,删除命名空间前的双冒号。

aNamespace::int32 aNamespace::aClass::aStaticFunction() noexcept {
    //does a thing
}

答案 1 :(得分:0)

相当简单的错误:
在源代码中Enigma之前缺少名称空间string 这是不寻常的,因为它已经很好地工作了很长时间,直到它突然停止工作

Engima::ExceptionCategory::CategoryID Enigma::ExceptionCategory::GetIDFromName(const Enigma::string& name) noexcept {
    //Omitted Code
}