Funkcja konwertująca

0

Mam klasę
class string { int roz; char *wsk; };
i potrzebuje wykonać ten kod
string s("ABC"); cout<<s<<endl;

wewnątrz nie ma operatora<<. Mam podobno skorzystać z funkcji konwertującej, a samo rozwiązanie to jedna linijka kodu.
Siedzę jednak i googluje już od dobrych 2 godzin i nie jestem w stanie zrozumieć co mam zrobić.

Próbowałem jakoś konwertować moją klasę na string, ale to chyba nie jest dobre rozwiązanie.

0

Domyślam się że chodzi ci o to https://dsp.krzaq.cc/post/304/jak-przeladowywac-operatory-w-mojej-klasie/
Zrób metodę getText() która będzie ci zwracała tekst przechowywany w obiekcje, wtedy będziesz mógł printować ją w taki sposób std::cout << foo.getText() << "\n", bez przeciążenia operatora << raczej nie uzyskasz czegoś jak std::cout << foo << "\n"

Możesz także spróbować przeciążyć operator char* () lub operator std::string () (https://en.cppreference.com/w/cpp/language/cast_operator)

1

Dokładnie wiem co masz dopisać, ale mnie "k&#@!#^a" bierze jak wiedzę to int roz; char *wsk; i jeszcze jak widzę jak masz to rozwiązać.
Ktoś cię źle uczy i teraz zastawaniem się: czy powinienem do tego przyłożyć rękę?

Ale niech będzie:

class crap_string
{
public:
     operator const char *() const {
          return wsk;
     }

     int roz; char *wsk;
};

https://wandbox.org/permlink/43B64WwoQao9ZGnS

0

A ja to zawsze robiłem definiując operator. Jakoś tak:

ostream &operator<<(ostream &o) {
    o.write(wsk, roz);
}

Podzielam opinię, że chyba ktoś cię w tej nauce wiedzie na manowce. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1