[c++] pretazenie <<

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod m.rangerx 6. 11. 2006 17:15

mam triedu, a ta ma parameter pole a potrebujem pretazit operator <<, aby som mohol napisat cou << instancia_triedy

akoze nieco som skusal ale vraca mi to, haluz teda asi to je adresa toho pola ale nie to pole ...



typedef char pole [24][79];

class plocha{

private:
pole pole1;

public:

plocha(char ch);
friend ostream& operator<<(ostream &os, plocha &plocha);

};

plocha::plocha(char ch){
for(int i=0;i<24;i++)
for(int j=0;j<79;j++)
pole1[i][j]=ch;

ostream& operator<<(ostream &os, plocha &plocha){
return (os << plocha.pole1);
}

please help
m.rangerx
Kolemjdoucí

Odeslat příspěvekod PaLaDiN 6. 11. 2006 18:14

nazov pola je len pointer na jeho prvy prvok
v tomto pripade by si mal aj na ten vypis znakov na os pouzit cyklus.

Co ma vlastne ten program robit?? lebo ak to ma byt pole retazcov, tak nato ides az prilis zlozito.
a nezabudni nato, ze ak je to retazec, tak posledny znak by mal byt '\0' inac to nebude retazec ale len pole znakov a tak s nim bude aj trieda istream zaobchadzat
PaLaDiN
Junior
Uživatelský avatar

Odeslat příspěvekod Karel Kalecký 6. 11. 2006 18:20

Samozřejmě, že to bude vypisovat adresu, protože plocha::pole1 je ukazatel.

Jestli chceš, aby ti to vypsalo všechny znaky, musíš napsat:
Kód: Vybrat vše
ostream& operator<< (ostream &os, plocha& pl) {
    for (int i = 0; i != 24; ++i)
        for (int j = 0; j != 79; ++j)
            os << pl. pole1 [i][j];
    return os;
}
Pravda má jednu velkou výhodu: člověk si nemusí pamatovat, co řekl.
Karel Kalecký
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod m.rangerx 6. 11. 2006 18:23

nie to vebec nema nic zo stringami(to by bolo vazne od veci takto robit)

no ma to byt program ktory kresli na obrazovku (unixovsky terminal 79stplcov a 24riadkov) stvorec kruznicu bod aleo priamku. a ma sa to vypisovat stylom ze si to niekam ulozis, to je ta moja plocha. a na vypis tej plochy musim pouzit prikaz cout<<instancia_plochy a na to potrebujem pretazit ten operator len neviem ako na to

to ostatne mam predstavu ako spravim ale toto pretazenie naozaj neviem, som aj cosi pozral na http://www.builder.cz odtial som to vlastne skusal prerobit ale tam by to fugovalo asi ak by som nevral ppole ale len nejaku polozku, ale to nie je az tak dolezite. Proste naozaj musis pretazit ten opeartor aby mi to tak vypisalo...
m.rangerx
Kolemjdoucí

Odeslat příspěvekod m.rangerx 6. 11. 2006 18:24

ok skusim, teraz ozvem sa jak to dopadlo
m.rangerx
Kolemjdoucí

Odeslat příspěvekod Drasha2 9. 11. 2006 21:04

Hehe, tohle mi pripomina praci pana Kucery na FI... Jinak si myslim, ze to co rekl Karel je spravne (uz je to par roku :) )
Drasha2
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků