“spécificateur de type manquant” erreur sur la déclaration du constructeur

J'ai 2 classes dans 2 fichiers différents:

RegMatrix.h:

#ifndef _RM_H
#define _RM_H
#include "SparseMatrix.h"
...
class RegMatrix{
    ...
    RegMatrix(const SparseMatrix &s){...}   //ctor
    ...
};
#endif

SparseMatrix.h:

#ifndef _SM_H
#define _SM_H
#include "RegMatrix.h"
...
class SparseMatrix{
    ...
    SparseMatrix(const RegMatrix &r){...}   //ctor
    ...
};
#endif

Sur le constructeur lignes j'obtiens les erreurs suivantes:

error C4430: spécificateur de type manquant - int supposé.

error C2143: erreur de syntaxe : manquant ',' avant '&'

Mais quand j'ajoute les classes déclarations

class SparseMatrix;

dans le RegMatrix.h fichier et

class RegMatrix;

dans le SparseMatrix.h de fichier, il fonctionne très bien.
Ma question est pourquoi est-il nécessaire, si j'ai le comprend?
10x.

Les identifiants _RM_H et _SM_H sont reserved, ne les utilisez pas.

OriginalL'auteur Sanich | 2010-09-27