Listing 2 TableDataNormalize class

// tdnorm.hpp
#ifndef TDNORM_HPP
#define TDNORM_HPP
#include "tbldata.hpp"

// (Note that cellType class must have SetValue() and
// GetValue() methods, and a copy constructor.)
template <class cellType> class TableDataNormalize:
       public TableData<cellType>
{
public:
   TableDataNormalize (TableData<cellType> *const
          prev): TableData<cellType> (prev)
   { }

   virtual const cellType GetCell (const int row,
          const int col)
   {
      assert (PrevTD != 0);
      cellType cell (PrevTD->GetCell (row, col));
      cell.SetValue ( cell.GetValue() /
             (PrevTD->GetCell (0, col)).GetValue());
      return (cell);
   }

   virtual void PutCell (const int row, const int col,
          const cellType &value)
   {
      assert (PrevTD != 0);
      cellType cell (value);
      cell.SetValue ( cell.GetValue() *
             (PrevTD->GetCell (0, col)).GetValue());
      PrevTD->PutCell (row, col, cell);
   }
};
#endif
// End of File