我使用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;
}
答案 0 :(得分:13)
您只需添加typename
:
using Iter = typename MyMap::iterator;
否则编译器不知道::iterator
是指类型而不是成员变量或方法。