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