Kód Výpis třídy do outputstream v CPP

Z CHWiki

Přejít na: navigace, hledání

Jak doplnit do své třidy, aby šla vypisovat do streamů např. takto:

MojeTrida a;
(...)
cout << "a = " << a << endl;

[editovat] Ukázkový kód

[main.cpp]

(...)
    Promenna a(5), b(10), c;  // vytvorim si objekty sve tridy
    c = a + b;                // neco s nima delam
    cout << "c = " << c << endl;  // vypisu si obsah 'c' do streamu 'cout'
(...)

[Promenna.h]

class Promenna {
public:
    (...)
    // tu vypisujici funkci zde napisu jako "friend", cimz ji umoznim videt i private
    // promenne teto tridy
    friend std::ostream& operator<<(std::ostream& o, const Promenna& prom) throw();
    (...)
);
(...)
// a deklarace te vypisovaci funkce
std::ostream& operator<<(std::ostream& o, const Promenna& prom) throw();

[Promenna.cpp]

// takhle ta vypisovaci funkce vypada
ostream& operator<<(ostream& o, const Promenna& prom) throw() {
    // nejaky kod uvnitr, ktery posila neco do output streamu 'o'
    if (prom.typ == tpCislo)
        o << prom.cislo;
    else if (prom.typ == tpReal)
        o << prom.real;
    else if (prom.typ == tpText)
        o << prom.text;
    return o;  // nezapomente ten ostream zas vratit
}