Ich bin auf der Suche nach einer einfachen Möglichkeit, ein Array von Zeichenfolgen zur Kompilierzeit zu erstellen. Für einen Test habe ich eine Klasse mit dem Namen Strings
zusammen, die folgenden Mitglieder hat:Missbrauch der Komma-Operator
Strings();
Strings(const Strings& that);
Strings(const char* s1);
Strings& operator=(const char* s1);
Strings& operator,(const char* s2);
diese verwenden, kann ich erfolgreich Code wie folgt zusammenstellen:
Strings s;
s="Hello","World!";
Der s="Hello"
Teil die operator=
ruft die zurück a Strings&
und dann die operator,
für "World!"
abgerufen werden.
Was kann ich nicht an die Arbeit (in MSVC, haben alle anderen Compiler noch nicht ausprobiert) ist
Strings s="Hello","World!";
Ich würde hier davon aus, dass Strings s="Hello"
den Kopierkonstruktor nennen würde und dann würde alles verhalten das gleiche wie im ersten Beispiel. Aber ich habe den Fehler: error C2059: syntax error : 'string'
Das funktioniert aber fein:
Strings s="Hello";
So weiß ich, dass die Kopie Konstruktor tut zumindest Arbeit für einen String. Irgendwelche Ideen? Ich möchte wirklich, dass die zweite Methode funktioniert, nur um den Code ein wenig sauberer zu machen.
Wow, ich habe eine Menge Witze über das Überladen der Komma-Operator gehört. Ich hätte nie erwartet, dass jemand es tatsächlich tun würde. –
@Carl: Was ist mit http://www.boost.org/doc/libs/1_40_0/libs/assign/doc/index.html#intro (sehr viel wie etwas OP will) – UncleBens
* schaudern * Nägel in Ihre eigenen Sarg. Wie wirst du das debuggen, wenn es falsch läuft? –