cómo deshacerse del error C3861 :?

Tengo una clase definida en c ++. Y tengo una plantilla dentro de su archivo .h. Y esta plantilla algunas de las clases locales definidas en el archivo .cxx.

contenido de ah

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

contenido de a.cxx

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

cuando compilo este archivo, se compila bien. Pero cuando trato de usar la plantilla que definí en ah. me arroja el siguiente error.

error C3861: 'abc': identificador no encontrado

preguntado el 08 de noviembre de 11 a las 12:11

¿Por qué declaras abc en a.cxx? Debe poner eso en un archivo de encabezado y cargarlo antes de su plantilla que lo usa. -

Por qué class abc es en a.cxx y no en el archivo de encabezado? Y por qué la extensión del archivo es cxxno, cpp? -

Debe colocar una flecha grande que apunte a la línea de código en el fragmento que no se compila. -

Este código no se compilará. Publica el código correcto. Que es template<classT> ? -

2 Respuestas

Haga una declaración hacia adelante de la clase abc como:

namespace test
{

 class abc;

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

respondido 08 nov., 11:16

Parece que echas de menos poner la declaración de class abc en el archivo .h.

Y tu pones Class a en lugar de class a.

respondido 08 nov., 11:16

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.