Erro do compilador C3771
"identificador": a declaração de amigo não pode ser encontrada no escopo do namespace mais próximo
A declaração de modelo de classe para o identificador de modelo especificado não pode ser encontrada no namespace atual.
Para corrigir este erro
- Verifique se a declaração de modelo de classe do identificador de modelo está definida no namespace atual ou se o identificador de modelo é um nome totalmente qualificado.
Exemplo
O exemplo de código a seguir declara um modelo de classe e uma função no namespace NA
, mas tenta declarar um modelo de função amigo no namespace 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.
};
}