Szukam łatwego sposobu na zbudowanie tablicy łańcuchów w czasie kompilacji. Dla testu ułożyła klasę o nazwie Strings
który ma następujące osoby:Nadużywanie operatora przecinka
Strings();
Strings(const Strings& that);
Strings(const char* s1);
Strings& operator=(const char* s1);
Strings& operator,(const char* s2);
Korzystanie z tego, mogę z powodzeniem kompilacji kodu tak:
Strings s;
s="Hello","World!";
s="Hello"
część wywołuje operator=
która zwraca a Strings&
, a następnie operator,
zostaje wywołana dla "World!"
.
Nie mogę dostać się do pracy (w MSVC, nie próbowałem jeszcze innych kompilatorów) jest
Strings s="Hello","World!";
bym Zakładamy tutaj, że Strings s="Hello"
by wywołać konstruktor kopiujący i wtedy wszystko będzie zachowywać taki sam jak pierwszy przykład. Ale pojawia się błąd: error C2059: syntax error : 'string'
Jednak to działa prawidłowo:
Strings s="Hello";
Więc wiem, że konstruktor kopia robi przynajmniej pracę na jednej strunie. Jakieś pomysły? Naprawdę chciałbym, aby druga metoda działała tylko po to, aby kod był trochę czystszy.
Wow, słyszałem dużo dowcipów na temat przeciążania operatora przecinków. Nigdy się nie spodziewałem, że ktoś naprawdę to zrobi. –
@Carl: A co z http://www.boost.org/doc/libs/1_40_0/libs/assign/doc/index.html#intro (bardzo lubię to, co OP chce) – UncleBens
* dreszcz * Własne paznokcie trumna. Jak zamierzasz to debugować, gdy zaczyna się źle? –