"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se pueden declarar estructuras/clases con plantilla como amigas en C++?

¿Cómo se pueden declarar estructuras/clases con plantilla como amigas en C++?

Publicado el 2024-11-19
Navegar:872

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

Declarar estructuras/clases con plantilla como amigas

En el ámbito de C, declarar estructuras o clases con plantilla como amigas puede presentar un obstáculo relacionado con la sintaxis. Para lograr esto, considere el siguiente enfoque:

template 
struct foo
{
    template 
    friend class foo;

private:
    // ...
};

Esta sintaxis parece compilarse correctamente. Sin embargo, declara todas las instancias de plantilla de foo como amigas entre sí, independientemente del parámetro de plantilla que tomen. Esto puede o no alinearse con su caso de uso previsto.

Si necesita limitar la amistad solo a instancias específicas, puede lograrlo usando esta sintaxis:

template 
struct foo
{
    template 
    friend struct foo;

private:
    // ...
};

Desafortunadamente, esta sintaxis no permite una declaración genérica que incluya todas las instancias posibles de foo.

Por lo tanto, si su objetivo es establecer amistad entre todas las instancias de plantilla de foo, el segundo enfoque que utiliza la clase amiga foo es lo más cercano que puede llegar, dadas las limitaciones de la sintaxis de C.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3