Problem z przeciążeniem operatora przecinek

0

Jak przeciążyć operator przecinek, aby można było wykonywać takie operacje.

class Obiekt //przechowuje tablicę z łańcuchami string
{
//...
};

Obiekt a;
Obiekt b;

a = "aaaa","bbb","ccc"; //teraz a zawiera tablice 3 elementow {"aaaa", "bbb", "ccc"}
b = a, "dd"; //teraz b zawiera tablice 4 elementow {"aaaa", "bbb", "ccc", "dd"}
b = "ee"; //teraz b zawiera tablice 1 elementu {"ee"}
 

Przeciążyłem operator przecinek, tak żeby zwracał obiekt zawierający tablice 2 elementów, ale muszę używać nawiasów np.

a = (a, "dd"); //zawiera elementy z a oraz element "dd"
a = a, "dd"; //teraz a zawiera tylko a

Chcę, żeby działało bez nawiasów. Jak to zrobić?

0

Niech operator przypisania zwróci obiekt klasy, która ma owy operator przecinka. Może być to z resztą ten sam obiekt.

0

Już rozumiem. Najpierw wykonywane jest przypisanie przez operator =, a potem dołączanie obiektu string do zwróconego obiektu przez operator ,.

0

Przeciążyłem operator przecinek, tak żeby zwracał obiekt zawierający tablice 2 elementów, ale muszę używać nawiasów np.
Przecinek ma zwalony priorytet, przez co niekoniecznie się nadaje do tego co chcesz zrobić.
Gdzieś czytałem nawet wywiad z którymś z twórców języka (Stroustrup albo Ritchie, nie pamiętam który) i było tez o tym, że żałował tej decyzji ale już tak zostało.

Zresztą, zapis z nawiasem jest czytelniejszy, widać co przypisujesz do czego.

C++11 ma initializer_list, dzięki czemu można zrobić

a = {"aaaa", "bbb", "ccc"};

bez cudowania z przecinkiem.

0

a nie możesz zrobić to w ten sposób:
a<<"aaaa"<<"bbb"<<"ccc";

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.