Ошибка: неполный тип, используемый во вложенном описателе имени

Есть 2 нешаблонных класса A , B , имеющих несколько статических шаблонных методов.

Из класса A вызывается статический метод в B , а из класса B вызывается статический метод из A . Исходный код только для иллюстрации (не настоящий код) ...

А

#include "B.h"
class A 
{
 public:
   template 
   void f1 ()
   {
      T var1= ...;
      T var2 = B::f4(T);
   }

   template 
   T f2()
   {
      return ...
   }
};

#include "A.h"
class B
{
 public:
   template 
   void f3 ()
   {
      T var1= ...;
      T var2 = A::f2(T); //Error
   }

   template 
   T f4()
   {
      return ...
   }
};

У меня проблемы с компилятором g ++ в NetBeans. Во время компиляции возникает следующая ошибка: Ошибка: неполный тип A используется во вложенном описателе имени, g ++.

Я попытался добавить форвардные объявления в оба класса, но ничего не получилось.

Есть более старая ошибка:

http://gcc.gnu.org/ml/gcc-bugs/2005-02/msg01383.html

19
задан Yu Hao 8 September 2016 в 03:06
поделиться