Hallo,
vielleicht kann mir ja jemand helfen. Ich habe hier ein Compilerproblem mit dem gcc-3.4. Ist nicht mein Problem, aber ich sollte es loesen. :)
Der make output ist im Anhang aufgefuehrt.
Zur Situation:
Die Klasse sieht ungefaehr so aus:
class Objectlist<T> : public std::list<T> { ... T* getObjectAt(int x, int y); ... };
Die Zeile, die vom Compiler angemeckert wird, lautet
template<class T> T* ObjectList::getObjectAt(int x, int y) { ... for (typename ObjctList<T>::iterator it = begin(); it != end();it++) ... }
Die Compilierung klappt problemlos unter gcc-3.3 Hat jemand eine Idee?
cu, Ulf
Ulf Lorenz ulf82@users.sf.net at 2004-06-18 1507 +0200:
Die Zeile, die vom Compiler angemeckert wird, lautet
template<class T> T* ObjectList::getObjectAt(int x, int y) { ... for (typename ObjctList<T>::iterator it = begin(); it != end();it++)... }
Wo hast du begin(), end() deklariert bzw. wie sehen die aus? Darüber beschwert er sich ja. Alternativ könntest du in dem Fall auch das weniger restriktive Verhalten des gcc-3.3 mit -fpermissive wieder herstellen; sauberer wäre eine richtige Lösung. Aber das steht ja da.
MfG, Jonas
On Fri, Jun 18, 2004 at 03:04:30PM +0200, Jonas Witt wrote:
Ulf Lorenz ulf82@users.sf.net at 2004-06-18 1507 +0200:
Die Zeile, die vom Compiler angemeckert wird, lautet
template<class T> T* ObjectList::getObjectAt(int x, int y) { ... for (typename ObjctList<T>::iterator it = begin(); it != end();it++)... }
Wo hast du begin(), end() deklariert bzw. wie sehen die aus? Darüber
Das sind die begin() und end() aus std::list. Die sollten einfach vererbt werden.
beschwert er sich ja. Alternativ könntest du in dem Fall auch das weniger restriktive Verhalten des gcc-3.3 mit -fpermissive wieder herstellen; sauberer wäre eine richtige Lösung. Aber das steht ja da.
Auf das "sauberer" kommt es mir an.
Ulf
lug-dd@mailman.schlittermann.de