Hay 2 clases que no son de plantilla A
, B
que tienen algunos métodos de plantilla estática.Error: tipo incompleto utilizado en el especificador de nombre anidado
de la clase A
método estático en B
se llama y de la clase B
método estático de A
se llama. El código fuente sólo para ilustración (código no real) ...
A.h
#include "B.h"
class A
{
public:
template <class T>
void f1()
{
T var1= ...;
T var2 = B::f4(T);
}
template <class T>
T f2()
{
return ...
}
};
#include "A.h"
class B
{
public:
template <class T>
void f3()
{
T var1= ...;
T var2 = A::f2(T); //Error
}
template <class T>
T f4()
{
return ...
}
};
estoy teniendo problemas con el compilador g ++ en NetBeans. Durante la compilación se produce el siguiente error: Error: tipo A incompleto utilizado en el especificador de nombre anidado, g ++.
Traté de agregar declaraciones hacia adelante en ambas clases, pero nada fue exitoso.
Hay un error de más edad:
http://gcc.gnu.org/ml/gcc-bugs/2005-02/msg01383.html
Y la solución es ...? –
Aquellos que votan en contra necesitan declarar contra lo que se oponen. Porque es una respuesta correcta a la pregunta OP. El OP no pidió explicaciones sobre cómo resolver las dependencias circulares del encabezado, esas trivialidades se explican en cada libro. –
http://stackoverflow.com/help/how-to-answer – peetonn