2011-11-08 4 views
-2

J'ai une classe définie en C++. Et j'ai un template dans son fichier .h. Et ce modèle quelques-unes des classes locales définies dans le fichier .cxx.comment se débarrasser de l'erreur C3861:?

contenu de a.h

namespace test 
{ 
Class a 
{ 
    template<classT> 
    { 
    abc xyz = //some initialization 
    } 
}; 
} 

contenu de a.cxx

#include "a.h" 
namespace test 
{ 
    class abc 
    { 
    }; 
} 

quand je compile ce fichier est compilé fin. Mais quand j'essaie d'utiliser le modèle que j'ai défini dans a.h. ça me jette l'erreur suivante.

erreur C3861: « abc »: identificateur non trouvé

+1

Pourquoi déclarez-vous abc dans un fichier.cxx? Vous devriez le mettre dans un fichier d'en-tête et le charger avant votre modèle qui l'utilise. – Rup

+0

Pourquoi 'classe abc' est dans' a.cxx' et pas dans le fichier d'entête? Et pourquoi l'extension de fichier est 'cxx', pas' cpp'? –

+1

Vous devez placer une grosse flèche pointant sur la ligne de code dans l'extrait qui ne compile pas. –

Répondre

0

faire une déclaration avant de la classe abc comme:

namespace test 
{ 

class abc; 

class a 
{ 
    template<classT> 
    { 
    abc xyz = //some initialization 
    } 
}; 
} 
0

Il semble que vous oubliez de mettre la déclaration de class abc dans le fichier .h . Vous avez mis Class a au lieu de class a.

Questions connexes