Klassenschablonen (template-Klassen)

TODO Klassenschablonen, typename

// 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 )



AnyWare@Wachtler.de