Поделиться через


Ошибка компилятора C3771

"идентификатор": в ближайшей области пространства имен не удалось найти дружественное объявление

Объявление шаблона класса для указанного шаблона идентификатор не удалось найти в текущем пространстве имен.

Исправление ошибки

  • Убедитесь, что объявление шаблона класса для идентификатора шаблона задается в текущем пространстве имен или что идентификатор шаблона является полным именем.

Пример

Следующий пример кода объявляет шаблон класса и функцию в пространстве имен NA, но пытается объявить шаблон дружественной функции в пространстве имен NB.

// C3771.cpp
// compile with: /c

namespace NA {
template<class T> class A {
    void aFunction(T t) {};
    };
}
// using namespace NA;
namespace NB {
    class X {
        template<class T> friend void A<T>::aFunction(T); // C3771
// try the following line instead
//      template<class T> friend void NA::A<T>::aFunction(T);
// or try "using namespace NA;" instead.
    };
}

См. также

Шаблоны