#include #include #include template class CArray { public: // Zunächst die nötigen Konstruktoren CArray( int ); CArray( CArray& ); // Jetzt die überladenen Funktionen TYP& operator[] ( int ); CArray& operator= ( CArray& ); // Und die GetSize() - Funktion int GetSize() const { return m_iSize; }; private: int m_iSize; TYP* m_pFeld; }; // Jetzt kommen die Klassendefinitionen template CArray::CArray( int index ) { m_pFeld = new TYP[index]; // Speicher reservieren m_iSize = index; } template CArray::CArray( CArray& quelle) { m_iSize = quelle.GetSize(); m_pFeld = new TYP[m_iSize]; // Speicher reservieren for( int i = 0; i < m_iSize; i++ ) m_pFeld[i] = quelle[i]; // Feld kopieren } template TYP& CArray::operator[] (int index) { if( index < m_iSize ) return m_pFeld[index]; else return m_pFeld[0]; } template CArray& CArray::operator= (CArray& quelle) { if( m_iSize == quelle.GetSize() ) { for( int i = 0; i < m_iSize; i++ ) m_pFeld[i] = quelle[i]; } return *this; } /****************************************/ void main() { CArray feld(3); feld[0] = 2; cout << feld[0] << " " << feld[1] << endl; CArray feld2 = feld; feld2[1] = 5; feld = feld2; cout << feld[0] << " " << feld[1] << endl; }