Objekt initialisieren mit dem Komma/Gleich Operator
-
CList<CString> items; (items, L"Hallo", L"das", L"ist", L"ein", L"Test");Wenn das für dich in Ordnung ist, musst du folgende Operatoren implementieren:
CList<CString>& operator,(CList<CString>& list, wchar_t const* s);
-
Oder man benutzt user-defined literals.
Ethon, lass doch den Doofsinn.
Den Kommaoperator sollte man nie Überladen.
-
Sone schrieb:
Den Kommaoperator sollte man nie Überladen.
Sagt wer? Ich lege Einspruch ein.
-
Google C++ Style Guide sagt: Do not overload operators except in rare, special circumstances
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Operator_Overloading
-
dd++ schrieb:
Do not overload operators except in rare, special circumstances
zwischen "rare special circumstances" und "nie" ist ja nun schon noch ein kleiner Unterschied
-
...
-
Kellerautomat schrieb:
Sone schrieb:
Den Kommaoperator sollte man nie Überladen.
Sagt wer? Ich lege Einspruch ein.
Nein, es geht um normalen Endanwendercode. Für solche Template-Bibliotheken wie die von Boost ist es klar, dass da keine Regeln gelt'n :p
-
Sone schrieb:
Nein, es geht um normalen Endanwendercode. Für solche Template-Bibliotheken wie die von Boost ist es klar, dass da keine Regeln gelt'n :p
Also wenn boost.assign oder boost.lambda nicht fuer Endanwender ist, dann weiss ich auch nicht.
-
Kellerautomat schrieb:
Sone schrieb:
Nein, es geht um normalen Endanwendercode. Für solche Template-Bibliotheken wie die von Boost ist es klar, dass da keine Regeln gelt'n :p
Also wenn boost.assign oder boost.lambda nicht fuer Endanwender ist, dann weiss ich auch nicht.
Nein, Boost.Assign oder Boost.Lambda sind aber kein Endanwendercode, sondern sehr flexibel zugeschnitten. Das war auch die Aussage - Code, den du für das eine Programm schreibst.
-
...
-
Swordfish schrieb:
Eine Operatorüberladung, die irgendeine Header-only-Bibliothek definiert hat auch im restlichen Programm Gülitigekt ... Wo willst denn da User von Library trennen!?
Gut, gut, ich habe mich vertüdelt. Wieder.
Aber was ist damit:pumuckl schrieb:
Es wird allgemein davon abgeraten, diesen Operator zu überladen, zumal die Auswertungsreihenfolge der beiden Argumente unbestimmt ist im Gegensatz zum eingebauten operator,, bei dem immer das linke Argument zuerst ausgewertet wird. Allerdings wird er in boost::assign überladen, um das Erstellen von Listen zur Initialisierung von Containern zu ermöglichen.
Irgendwelche Fälle wo es Sinn macht gibt es natürlich immer.
-
...
-
sollte, Swordfish, sollte.