operator << als Member überladen

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:
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
};
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.
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";
}
 
Hi.

Was heißt denn "es funktioniert nicht"? Laufzeitfehler? Compilerfehler? Oder was?

Poste bitte auch den Code der dann zum Fehler führt. Mach am besten mal ein Minimalbeispiel was ohne weiteres kompiliert werden könnte.

Gruß
 
Zurück