Escopo de visibilidade das funções de amigos inline
Apesar de definir funções de amigos inline dentro de uma classe, seu escopo real se estende além dos limites da classe. O padrão C determina que o nome de uma função amiga inline se refere a uma função declarada no escopo de namespace mais próximo.
No entanto, esta função declarada não é acessível por meio de pesquisa não qualificada ou qualificada até que uma declaração correspondente seja fornecida dentro desse namespace escopo. Conseqüentemente, chamadas diretas para a função amigo da própria classe, abrangendo o escopo ou funções-membro resultarão em erros.
Essa limitação decorre do fato de que a função amigo é declarada na classe sem substituir ou redefinir um nome da função existente. Portanto, o compilador não reconhece a função na classe ou no escopo do namespace até encontrar uma declaração explícita nesse namespace.
Para acessar a função de amigo inline, você pode empregar pesquisa dependente de argumento (ADL) . ADL permite que o compilador procure a função com base nos tipos de argumentos usados na chamada. Esta abordagem está alinhada com o princípio de que a função é considerada "relacionada" ao tipo que está sendo passado como argumento.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3