GCC 编译类型错误:预期的类型说明符

GCC compile type error: expected type-specifier

本文关键字:类型 说明符 编译类型 错误 GCC      更新时间:2023-10-16

我有以下源代码,用MinGW编译。但是当我尝试构建时,我有一个编译类型错误:

main.cpp:11: error: expected type-specifier
   using Iter = MyMap::iterator;
              ^
main.cpp:12: error: expected type-specifier
   using CIter = MyMap::const_iterator;
               ^

GCC 期望在MyMap之前有一个说明符。但是它期望哪个说明符?

#include <ctime>
#include <map>
template< typename T >
class MyClass
{
private:
    class Inner {};
    using MyMap = std::map< time_t, Inner >;
    using Iter = MyMap::iterator;
    using CIter = MyMap::const_iterator;
};
int main()
{
    return 0;
}

你只需要添加typename

using Iter = typename MyMap::iterator;

否则,编译器不知道::iterator引用类型而不是成员变量或方法。