"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 > ¿Por qué una clase con plantilla necesita declarar una clase con plantilla amiga con un parámetro de plantilla diferente?

¿Por qué una clase con plantilla necesita declarar una clase con plantilla amiga con un parámetro de plantilla diferente?

Publicado el 2024-11-13
Navegar:703

Why Does a Templated Class Need to Declare a Friend Templated Class with a Different Template Parameter?

Clase de plantilla con clase de plantilla de amigo: descifrando la mecánica

En este escenario, está definiendo una plantilla de clase de árbol binario (BT) y una plantilla de clase (BE ) que representa un elemento del árbol. Te encuentras con un requisito peculiar al declarar la plantilla de amigo como BT en lugar de BT. Una investigación de este comportamiento conduce a una comprensión profunda de las plantillas de clase y las relaciones entre amigos.

Plantillas anidadas y sombreado

Inicialmente, intenta declarar la plantilla de amigo como plantilla clase de amigo BT;. Sin embargo, esto está prohibido porque los parámetros de plantilla de las plantillas anidadas no pueden tener el mismo nombre. Las plantillas anidadas deben utilizar nombres de parámetros de plantilla distintos.

Definición de relaciones de amistad

Cuando declaras la clase de amistad de la plantilla BT;, estableces una relación de amistad entre BT y BE, independientemente de la argumentos de plantilla de BT. Esto significa que cualquier instancia de BT puede acceder a los miembros privados de cualquier instancia de BE.

Si desea restringir la relación de amistad solo a aquellas instancias de BT que utilizan el mismo argumento de plantilla que BE, debe declarar el amigo de la siguiente manera:

template friend class bar;

En su caso específico, declarando la barra de clase de amigo; dentro de la clase BE debería ser suficiente.

Ú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