linux-l: C++ (templates, operator overloading)
Michael Wiedmann
michael.wiedmann at detewe.de
Mo Aug 2 13:35:19 CEST 1999
Samy Khadem-Al-Charieh schrieb:
[...]
> monom.cc
> ----------------------------------------
> #include "monom.h"
> template<class t_type>
> void monom<t_type>::print() {
> cout << m_coeff << "*x^" << m_order << endl;
> }
[...]
Die Defintion der Template-Methoden darf natürlich nicht in einer
CC-Datei
stehen, sondern in der zugehörigen H-Datei, also ungefähr so:
monom.h
----------------------------------------
#include <iostream>
using namespace std;
template<class t_type> class monom {
protected:
int m_order;
int m_coeff;
public:
monom(int o, int c);
void print(void);
};
template<class t_type>
monom<t_type>::monom<t_type>(int o, int c)
{
m_order=o; m_coeff=c;
}
template<class t_type>
void monom<t_type>::print() {
cout << m_coeff << "*x^" << m_order << endl;
}
Deine "monom.cc" ist also nicht notwendig, beachte aber noch "m_coeff",
dessen Typ in deinem Beispiel falsch war.
Zu deinem Problem mit dem Überladen des "<<"-Operators, kann ich im
Moment nur soviel sagen, als dass (<- neue Rechtschreibung!) du dir im
Stroustrup mal das Kapitel 21.2.3 "Ausgabe selbstdefinierter Datentypen"
genauer ansehen solltest.
Auf den ersten Blick fehlen dir wohl Referenzen auf "ostream".
Gruß
Michael
------------------------------------------------------------------------
Michael Wiedmann |
Cordless Technology A/S | "Keep computers away from windows"
Köpenicker Str. 180 | (Garfinkel/Spafford:
D-10997 Berlin | Practical Unix & Internet Security)
------------------------------------------------------------------------
Mehr Informationen über die Mailingliste linux-l