zuweisungsoperator selbstzuweisung überprüfen...
-
hi!
möchte bei einem zuweisungsoperator eine selbstzuweisung überprüfen...
normal würde ich das so machen:list& operator= ( const list &list_ ) { if(list == this) return *this;
aber nun lese ich den artikel...
http://www.gotw.ca/gotw/059.htmwie mach ich das nun mit swap? es ist spät und ich schlafe beim lesen immer ein *g*
cu
-
wie mach ich das nun mit swap? es ist spät und ich schlafe beim lesen immer ein *g*
ROFLMAO
-
entweder selber tauschen, oder die std::swap aus algorithm nutzen.
-
Du musst für deinen eigenen Datentyp erstmal eine swap() Funktion erzeugen. Nehmen wir an, dass deine list Klasse die folgenden zwei Member hat: front_ und end_
Dann würde ein swap so aussehen:
void list::swap(list & other) { std::swap(front_, other.front_); std::swap(end_, other.end_); }
Zusätzlich würde ich noch std::swap spezialiseren:
namespace std { template <> void swap<list>(list & a, list & b) { a.swap(b); } }
-
ui ui ui.
Du baust einfach was ein, tztz böser Ponto :p
-
Ponto schrieb:
Zusätzlich würde ich noch std::swap spezialiseren:
lieber überladen
-
Shade Of Mine schrieb:
Ponto schrieb:
Zusätzlich würde ich noch std::swap spezialiseren:
lieber überladen
Geht doch auch nicht anders, oder sehe ich das falsch?
// edit: Klar geht es anders, ich hab schon wieder an die Partiell Spezialisierung von Template Funktionen gedacht, und das geht nicht -.-