Istnieją dwie nie szablonowe klasy A
, B
mające pewne statyczne metody szablonów.Błąd: niekompletny typ użyty w specyfikatorze nazwy zagnieżdżonej
Z klasy A
jest wywoływana metoda statyczna w B
, a od klasy B
wybrano metodę statyczną z A
. Kod źródłowy tylko w celach ilustracyjnych (nie prawdziwy kod) ...
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 ...
}
};
Mam kłopoty z kompilator g ++ w NetBeans. Podczas kompilacji występuje następujący błąd: Błąd: niekompletny typ A używany w zagnieżdżonym specyfikatorze nazwy, g ++.
Próbowałem dodać deklaracje przekazania do obu klas, ale nic się nie udało.
Jest starszy bug:
http://gcc.gnu.org/ml/gcc-bugs/2005-02/msg01383.html
A rozwiązaniem jest ...? –
Ci, którzy rzucają się w cień, muszą powiedzieć, przeciwko czemu sprzeciwiają się. Ponieważ jest to poprawna odpowiedź na pytanie OP. OP nie prosi o wyjaśnienie, w jaki sposób rozwiązywać zależność od okrągłych nagłówków, te trywialności są wyjaśnione w każdej książce. –
http://stackoverflow.com/help/how-to-answer – peetonn