"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você pode declarar estruturas/classes modeladas como amigas em C++?

Como você pode declarar estruturas/classes modeladas como amigas em C++?

Publicado em 19/11/2024
Navegar:221

How Can You Declare Templated Structs/Classes as Friends in C  ?

Declarando estruturas/classes modeladas como amigos

No domínio de C , declarar estruturas ou classes modeladas como amigos pode apresentar um obstáculo relacionado à sintaxe. Para conseguir isso, considere a seguinte abordagem:

template 
struct foo
{
    template 
    friend class foo;

private:
    // ...
};

Esta sintaxe parece ter sido compilada com sucesso. No entanto, ele declara todas as instanciações de modelo de foo como amigas entre si, independentemente do parâmetro de modelo que elas utilizam. Isso pode ou não estar alinhado com o caso de uso pretendido.

Se você precisar limitar a amizade apenas a instanciações específicas, poderá fazer isso usando esta sintaxe:

template 
struct foo
{
    template 
    friend struct foo;

private:
    // ...
};

Infelizmente, esta sintaxe não permite uma declaração genérica que inclua todas as instanciações possíveis de foo.

Portanto, se seu objetivo é estabelecer amizade em todas as instanciações de modelo de foo, a segunda abordagem usando a classe amigo foo é a mais próxima que você pode chegar, dadas as restrições da sintaxe C.

Tutorial mais recente Mais>

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