AlexanderKiebler
Grünschnabel
Hi
Ich habe das Problem, daß ich den operator << als Member einer Klasse überladen möchte. Als nicht Memberfunktion funktioniert es ohne Probleme. Leider jedoch nicht, wenn ich die Methode als Member der Klasse deklariere.
Definition der Klasse:
Und die Realisierung der zu überladenden operatoren. Ich habe die funktionierende Überladung auskommentiert. Sie funktioniert mit dem Aufruf aus einer Methode der Klasse mit : cout << this . Also vom type pointer auf die klasse.
Mit Referenzübergabe und: cout << *this. funktioniert es logischer Weise auch. Aber eben nicht als Memberfunktion.
Ich habe das Problem, daß ich den operator << als Member einer Klasse überladen möchte. Als nicht Memberfunktion funktioniert es ohne Probleme. Leider jedoch nicht, wenn ich die Methode als Member der Klasse deklariere.
Definition der Klasse:
PHP:
template<class kind_pgm> class pgm_p2 : public pgm<kind_pgm>
{
private:
pgm_grau<kind_pgm> *data; //Die graustufendaten
pgm_grau<kind_pgm> *pos_ptr; //Pointer auf aktuelles Element der Liste
void rek_clear_list(pgm_grau<kind_pgm> *dat); //Rekursives löschen einer Liste
public:
pgm_p2(std::string dat_nam,int size_x,int size_y,std::string formken,kind_pgm iss); //Konstruktor
~pgm_p2(); //Destruktor
//Datei öffnen
virtual void read_head(void) throw(pgm_err); //Liest den Header
//Datenmaipulation
virtual void next_akt_pix(void) throw(pgm_err); //Nächstes Listenelement als aktuelles Pixel
virtual void set_akt_pix(int Breite, int Hoehe) throw(pgm_err); //Setze aktuelle Pixelposition
virtual kind_pgm get_pix(void); //Gibt pixel zurück auf welches pos_ptr zeigt
virtual void write_pix(kind_pgm iss); //Schreibt Pixel, auf welches pos_ptr zeigt
virtual void append_pix(kind_pgm iss) throw(pgm_err); //Hängt ein Pixel an die Liste an
std::ostream operator<<(const pgm_p2<kind_pgm> *op) const; //Ausgabe streamen
};
Mit Referenzübergabe und: cout << *this. funktioniert es logischer Weise auch. Aber eben nicht als Memberfunktion.
PHP:
/*
// operator<< ÃŒberladen
template<typename kind_pgm> std::ostream& operator<<(std::ostream& stream,const pgm_p2<kind_pgm> *op)
{
stream << "Jeah";
return stream;
//return this;//s.get_pix();
}
*/
//operator << ÃŒberladen als Memberfunktion
template<typename kind_pgm> std::ostream pgm_p2<kind_pgm>::operator<<(const pgm_p2<kind_pgm> *op) const
{
//std::string a("Jeah");
//std::ostream *out;
//out = new std::ostream;
//out << "Cool";
std::cout << "cool \n";
return std::cout << "hallo";
}