Profundizando en las plantillas de clase con amigos de clase de plantilla
Al definir una clase de árbol binario (BT) y su clase de elemento (BE), es Es necesario establecer una relación de amistad para que BT acceda a los miembros privados de BE. Sin embargo, es fundamental comprender la mecánica subyacente para definir la relación correctamente.
Originalmente, intentaste declarar la relación de amigo como plantilla
En su lugar, debes usar diferentes nombres de parámetros de plantilla, como:
templateclass BE { template friend class BT; };
Esta declaración indica que cualquier clase BT, independientemente de sus argumentos de plantilla, es amiga de todas las clases BE con argumentos de plantilla coincidentes.
Considere los siguientes ejemplos para aclarar aún más los diferentes tipos de relaciones de amistad:
templatestruct foo { template friend class bar; };
En este caso, bar es amigo de foo independientemente de los argumentos de la plantilla de bar. Cualquier especialización de bar sería amiga de cualquier especialización de foo.
templatestruct foo { friend class bar ; };
Aquí, bar solo es amigo de foo si el argumento de su plantilla coincide con el de foo. Entonces, solo bar
En su escenario específico, la clase de amigo bar
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