duda c++


  • 0

    Objeto1.getObjeto2().setPropiedad(param1);

    Objeto1.getObjeto2().getPropiedad(); // no devuelve nada

    A que puede deberse.. ?

    Os daré mis dies si respondéis.



  • 1

    Incluso aunque no tenga ni idea de programación? xD

    Objeto1.getObjeto2().setPropiedad(param1);

    Objeto1.getObjeto2().getPropiedad(); <- aquí no te faltaría lo de "param1" :eing:

    es broma, no es por los dieses, no tengo ni puta idea así que no me lo agradezcas xDD



  • 2

    Tendría que ver el código concreto, pero supongo que necesitaras una variable a la que asignarle el valor que devuelve.

    Tipo variable = Objeto1.getObjeto2().getPropiedad();

    Además, asegurase de que esa función realmente devuelve algo (con return o algo). Y dependiendo del lenguaje, asegurase que el tipo de la variable sea el mismo que el tipo de dato que devuelve esa función.



  • 3

    Sí,todo eso que decís esta comprobado, creo que era el tema de devolver una referencia o el objeto, estaba devolviendo el objeto y no la referencia.. creía que con objetos se comportaba como si fueran referencias, en fin creo que lo solucione..

    para que lo entendaís..

    ahora getObjeto2() lo que devuelve no es el objeto,si no la referencia del objeto ( la posición en memoria)

    yo estaba haciendo..

    tipoDeObjeto getObjeto(){return objeto;}

    y ahora

    tipoDeObjeto * getReferencia(){return &referencia;}

    parece que ahora al tratarlo sí que funciona. Creo que esto no es necesario cuando tienes un puntero como objeto.



  • 4

    Pues creo que esa era la cuestión....pero creo que la has explicado de forma no muy rigurosa.
    Aquí viene Petete:

    Cuando hacías:
    Objeto1.getObjeto2().setPropiedad(param1);
    el método getObjeto2() no devolvía el objeto, sino una copia(valor) del objeto, la cual es modificada con el método setPropiedad().
    Pero al trabajar con una copia, efectivamente los cambios no se aplican al objeto que tu quieres.

    De todas formas, la solución que has hallado es muy "C" y si estás en C++ es mejor que uses una función que retorna una referencia.(que es lo mismo que has hecho realmente y que en definitiva se trata de retornar el objeto o variable y no una copia del mismo)
    tipoDeObjeto & getReferencia(){return referencia;}



  • 5

    @Pixel dijo:

    Incluso aunque no tenga ni idea de programación? xD
    Objeto1.getObjeto2().setPropiedad(param1);
    Objeto1.getObjeto2().getPropiedad(); <- aquí no te faltaría lo de "param1" :eing:
    es broma, no es por los dieses, no tengo ni puta idea así que no me lo agradezcas xDD

    Te corrijo xD y gracias por responder de todas formas ..

    No no hace falta poner un parametro (En este caso no..) jej, el parámetro es solo si quieres pasarle algo a la función, en este caso no es necesario, pues la idea es devolver un objeto que cumple una relación de clientela con la clase de origen, simplemente.



  • 6

    @dehm dijo:

    Pues creo que esa era la cuestión....pero creo que la has explicado de forma no muy rigurosa.
    Aquí viene Petete:
    Cuando hacías:
    Objeto1.getObjeto2().setPropiedad(param1);
    el método getObjeto2() no devolvía el objeto, sino una copia(valor) del objeto, la cual es modificada con el método setPropiedad().
    Pero al trabajar con una copia, efectivamente los cambios no se aplican al objeto que tu quieres.
    De todas formas, la solución que has hallado es muy "C" y si estás en C++ es mejor que uses una función que retorna una referencia.(que es lo mismo que has hecho realmente y que en definitiva se trata de retornar el objeto o variable y no una copia del mismo)
    tipoDeObjeto & getReferencia(){return referencia;}

    Gracias por la aclaración.



  • 7
    ¡Esta publicación está eliminada!


  • 8
    ¡Esta publicación está eliminada!


  • 9
    print ashjbnljnsdfajkl
    for asjnsdajklnsdg
    class onjsdklnsg
    return asjasnhsa
    



Has perdido la conexión. Reconectando a Éxodo.