ciao a tutti. ho un problema con un pezzo di codice riguardante la creazione di una classe matrice. io ho fatto i seguenti codici:

matric.h

[CODE]
#ifndef _MATRICE_H
#define _MATRICE_H

typedef int tipoelem;

class matrice
{
pubblic:
matrice(int, int);
matrice creamatrice();
tipoelem leggimatrice(int, int);
void scrivimatrice(int, int, tipoelem);
matrice eseguiprodotto(matrice, int, int, matrice, int, int);
private:
int righe;
int colonne;
tipoelem matrix[righe][colonne];
}

#endif
[\CODE]

matrice.cpp
[CODE]
#include "matrice.h"
#include <iostream>

matrice(int riga, int colonna)
{
righe = riga;
colonne = colonna;
}

void matrice::creamatrice()
{
int i, j;
for(i = 0; i < righe; i++)
{
for(j = 0; j < colonne; j++)
{
cin >> matrix[i][j];
cout << " ";
}
cout << "\n";
}
}

tipoelem matrice::leggimatrice(int riga, int colonna)
{
return(matrix[riga][colonna]);
}

void matrice::scrivimatrice(int riga, int colonna, tipoelem elemento)
{
matrix[riga][colonna] = elemento;
}

matrice &matrice::eseguiprodetto(matrice matA, int rigA, int colA, matrice matB, int rigB, int colB)
{
if(colA != rigB)
{
cout << "il prodotto non si puo' effettuare!\n\n\n";
return 0;
}

tipoelem matC[rigA][colB] = 0;

for(int i = 0; i < rigA; i++)
{
for(int j = 0; j < colB; j++)
{
for(int p = 0; p < colA; p++)
{
matC[i][j] = matC[i][j] + matA[i][p]*matB[p][j];
}
cout << " ";
}
cout << "\n";
}

return(matC);
}
[\CODE]

quando lo compilo mi dà il seguente errore:
invalid use of undefined type 'class matrice'
questo alla linea 9 del file.h.
cosa c'è che non va? secondo me il costruttore sta fatto bene.