Kompilierfehler: (g++) ... is not a type
-
Ein kleiner Ausschnitt aus meiner Klasse:
template <class TBandHash, class TQGramHash, class BHT, class QGramHashFunction> class LSH_Generic { typedef TQGramHash SignatureHash; virtual BandHash bandHashFunction(std::vector<SignatureHash>::iterator sig_begin, std::vector<SignatureHash>::iterator sig_end);
In meinem Fall ist TQGramHash = uint32_t
Es kommt folgender Fehler:
In file included from ../../readmapper/mapper/module/IndexOptions.h:5:0, from ../../readmapper/mapper/module/IndexOptions.cpp:1: ../../readmapper/mapper/map/LSH.h:252:71: error: 'std::vector<TQGramHash, std::allocator<_T2> >::iterator' is not a type LSH_VIRTUAL BandHash bandHashFunction(std::vector<SignatureHash>::iterator sig_begin, ^ ../../readmapper/mapper/map/LSH.h:253:71: error: 'std::vector<TQGramHash, std::allocator<_T2> >::iterator' is not a type std::vector<SignatureHash>::iterator sig_end); ^
Wenn ich SignatureHash direkt als uint32_t definiere (also
typedef uint32_t SignatureHash;
) kompiliert alles fehlerfrei.Warum?
-
-
ok, danke, es geht.
Warum gibt es überhaupt dieses typename? Angenommen, das keyword typename würde nicht existieren. Gäbe es dann Situationen, in denen es für den Compiler nicht eindeutig ist, was gemeint ist? Ein Beispiel wäre schön, weil irgendwie hab ich bisher den Sinn von typename noch nicht verstanden.
-
Les die verlinkte Seite.
-
Nathan schrieb:
Les die verlinkte Seite.
Und du lies mal einen Duden :p