Compartilhar via


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.
    };
}

Confira também

Modelos