Ошибка компилятора 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.
};
}