001
27.12.2005, 17:11 Uhr
0xdeadbeef
Gott (Operator)
|
So geht's:
C++: |
for(typename vector <clst>::iterator it = a.begin(); it != a.end(); it++) {
|
vector<int> ist wahrscheinlich im header bereits konkretisiert, desewgen weiß der Compiler, dass es sich bei vector<int>::iterator um einen Typnamen handelt. Für clst ist das nicht der Fall, da könnte zum Beispiel später
C++: |
template<> class vector<foo> { public: int iterator; };
|
kommen. Damit der Compiler weiß, was er da erwarten soll, muss man in solchen Fällen explizit deklarieren, dass es sich um einen Typnamen handelt. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |