kleines template problem
-
Hi!
Wa ist an diesm Code falsch?
template <class T> DLLEXPORT inline void meSwap(T& a, T& b) { T t(a); a = b; b = t; };
VC6 meckert:
meutility.h(14) : error C2166: L-Wert gibt ein konstantes Objekt an
meutility.cpp(367) : Siehe Verweis auf Instantiierung der kompilierten Funktionsvorlage 'void __cdecl meSwap(const int &,const int &)'ich rufe sie so auf:
struct mePoint { int x; int y; }; mePoint p; // mach was mit p if(p.x < p.y) meSwap(p.x, p.y);
Was ist daran denn falsch?
-
Hallo,
bis auf das Semikolon hinter der Funktionsdefinition sehe ich keinen Fehler (das DLLEXPORT ignoriere ich mal).
Bist du sicher, dass du wirklich den Code gepostet hast, der zur Fehlermeldung führt? Die Fehlermeldung zeigt, dass T nach const int hergeleitet wurde. Das macht für dein Beispiel aber keinen Sinn.
-
Ach, hab den blöden Fehler gefunden:
bool meLineHitsRect(const mePoint& begin, const mePoint& end, const mePoint& tl, const mePoint& br, mePoint& out) { if(begin.x > end.x) meSwap(begin.x, end.x); if(begin.y > end.y) meSwap(begin.y, end.y); //... }
naja, kan ja mal passieren