2

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;
}
4

1 に答える 1

13

追加するだけですtypename

using Iter = typename MyMap::iterator;

::iteratorそうしないと、コンパイラはそれがメンバー変数やメソッドではなく、型を参照していることを知りません。

于 2013-10-03T10:46:55.320 に答える