// Fichier genere avec ./genere -t2 Base #ifndef _BASE_H_ #define _BASE_H_ #include using namespace std; //---- Pour les classes template avec fonctions amies template class Base; template ostream& operator<<(ostream& os, const Base& aB); template bool operator==(const Base& aB1, const Base& aB2); template bool operator!=(const Base& aB1, const Base& aB2); //--------------------------------------------------- //export template class Base { friend ostream& operator<< <>(ostream& os, const Base& aB); public : // Allocateurs/Desallocateurs Base(void); Base(const Base& aB); Base& operator=(const Base& aB); virtual ~Base(void); // Comparaisons friend bool operator== <>(const Base& aB1, const Base& aB2); friend bool operator!= <>(const Base& aB1, const Base& aB2); // Inspecteurs/modificateurs void setBaseObject(const T1& object); const T1& getBaseObject(void) const; void setBasePointer(const T2* pointer); const T2* getBasePointer(void) const; protected : // Methodes a appeler par une classe derivee // display: a appeler dans une classe derivee // display est une virtual void display(ostream& os) const; // methode appelee // dans operator<< // isEqualTo: a appeler dans une classe derivee (dans operator==) bool isEqualTo(const Base& aB) const; protected : private : T1 _baseObject; T2* _basePointer; private : // Methodes privees d'allocation/desallocation void _copy(const Base& aB); void _destroy(void); }; #endif // _BASE_H_