Przeładowny operator<<

0

witam mam następujacy problem:

posiadam klase "debug", której chciałbym używać w następujcy spoób.

this->debug << "Wiadomosc" << endl;

jak widac obiekt debug jest tworzony dynamicznie w klasie nadrzednej i przechowywany jest wskaznik do obiektu debug

w klasie debug przeładowałem operator<< w następujący sposób:

void operator<< (const char* s);
		void operator<< (int& val);

i implementacja

void debug::operator<< (const char* s)
	{
	cout << s;
	}

void debug::operator<< (int& val)
	{
	cout << val;
	}

i teraz przy wywolywaniu:

this->debug << "test" << endl;

dostaję błąd:

Error src\robot.cpp 7: Illegal use of pointer in function robot::robot (int)

gdy zastosuję taki zapis:

this->debug->operator<< ("test");

wszystko jest ok ale chcialbym moc uzywac teog tak jak napisalem na poczatku

0

operator<< jako pierwszy argument powinien brać strumień. Powinien też zwracać strumień.

0

Czyli jak powinna wyglada implementacja tego ?

probowalem:

ostream& operator<< (ostream&, const char* s);

dostaje blad:

Error c:\program\include\debug.h 24: 'debug::oprator <<(ostream &, const char *)' must be declared with one parameter

0
ostream& operator<< (ostream& strumien, string s)
{
     strumien << s;
     return strumien;
}
0

Nie ma to jak czytanie ze zrozumieniem ;)

Możesz zrobić ten operator poza klasą (zakładam, że nazwa klasy to CDebug):

CDebug* operator<<(const CDebug *debug, const char *s)
{
    cout << s;
    return debug;
}

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