1

CustomMap私はそのようにQMapを実装するC++クラスを持っています..

template <class Key, class T> class CustomMap : public QMap<Key, T>

さて、関数で:

template <class MK, class IK, class TK> static TK _at(MK *map, int idx){
...
QMap<int, Key>::Iterator a;
QMap<int, Key>::Iterator b;
...
}

ただし、これらの数行のコードだけで複数のエラーが発生します...

error: unknown type name 'Iterator'
  virtual Iterator insert(const Key &key, const T &value)
error: expected ';' after expression
    QMap<int, Key>::Iterator a;
        ^
        ;
error: expected ';' after expression
    QMap<int, Key>::Iterator b;
        ^
        ;

#include <QMap>イテレータが定義されているヘッダーで既に実行しておりtypedef iterator Iterator、Qt QMap オブジェクト内でも発生します。

msvc コンパイラを使用して、まったく同じコードを Visual Studio でコンパイルして実行しています。OSX で Clang を使用すると、エラーが表示されます。

私のセットアップには以下が含まれます:

  • OSX
  • クラン
  • Qt 5.4
  • すべてのインクルード フォルダーが設定され、他のすべてが正常にビルドされます。

編集: Iterator を のQMap<int, QString>::Iterator a代わりにとして定義するQMap<int,Key>::Iterator aと、エラーが削除されます。この動作は説明できますか? 私が見たところ、それは元の実装と実質的に同じですQMap

4

0 に答える 0