// Time-stamp: "07.01.06 04:54 t.cpp klaus@wachtler.de" #include <iostream> #include <stdexcept> template <class T, int N> class Feld { private: T f[N]; public: T&operator[]( long index ) { if( index<0 || index>=N ) { throw( std::runtime_error( "so gehts nicht!" ) ); } return f[index]; } }; int main( int nargs, char **args ) { try { Feld<int,10> meinFeld; meinFeld[20] = 12; } catch( std::exception &error ) { std::cerr << error.what() << std::endl; } } // main( int nargs, char **args )
TODO: Spezialisierungen möglich! [Cline: C++ FAQs] 25.03
TODO: Defaultparameter:
// Time-stamp: "07.01.06 05:01 templdefltclass.cpp klaus@wachtler.de" #include <iostream> #include <stdexcept> using namespace std; template <class T, int N=10> class Feld { private: T f[N]; public: T&operator[]( long index ) { if( index<0 || index>=N ) { throw( std::runtime_error( "so gehts nicht!" ) ); } return f[index]; } }; int main( int nargs, char **args ) { try { Feld<int,10> meinFeld; meinFeld[20] = 12; } catch( std::exception &error ) { std::cerr << error.what() << std::endl; } try { Feld<int> meinFeld; meinFeld[15] = 12; std::cout << meinFeld[5] << std::endl; } catch( std::exception &error ) { std::cerr << error.what() << std::endl; } } // main( int nargs, char **args )