Sarebbe utile che riportassi anche gli errori e la classe base.
codice:
[//Classe matrice_dim2x2 derivata da matrice
template<typename T>
class matrice_dim2x2 : public matrice<T>{
  public:
   matrice_dim2x2();
   int determinante(matrice<T> obj);                   
};
template<typename T>
matrice_dim2x2<T>::matrice_dim2x2() {
    colonne=2;
    righe=2;
}
template<typename T>
int matrice_dim2x2<T>::determinante(matrice<T> obj) {
  return(valori[0]*valori[3]-valori[1]*valori[2]);
}
Quelli in rosso immagino siano errori di battitura.