es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para que el programa sea compilado correctamente, debes declarar la función B como amiga de la clase A y definirla dentro de la clase A. Esto se debe a que la estructura S es un miembro privado de la clase A y solo puede ser accedida por funciones amigas o métodos de la clase A. Aquí está el código corregido:

    template <class t="">
    class A {
        struct S {
            /* algunos datos */
        };
        S some_member;
    public:
        /* algunos métodos */
        friend bool B (S s) {
            /* hacer algo */
        }
    };
    

    Alternativamente, puedes declarar la estructura S fuera de la clase A y pasarla como parámetro de plantilla tanto a la clase A como a la función B. Aquí está el código corregido usando este enfoque:

    “`cpp
    template
    class A {
    S some_member;
    public:
    /* algunos métodos /
    friend bool B (S s) {
    /
    hacer algo */
    }
    };

    struct S {
    /* algunos datos */
    };

    int main() {
    // Ejemplo de uso
    A<int, s=””> obj;
    S s;
    bool result = B(s);
    return 0;
    }
    “`</int,>

Comments are closed.