Acceder a variables de una clase desde otra clase?

Iniciado por overxfl0w13, 11 Julio 2012, 22:06 PM

0 Miembros y 1 Visitante están viendo este tema.

overxfl0w13

Buenas compañeros, me ha surgido otro problema. El caso es que quiero modificar desde una clase, una variable de otra en la cual ya he declarado un objeto, he probado pasando como parámetros punteros,referencias e incluso el objeto(cosa que daba error) y no consigo modificar el nombre.

¿Existe alguna manera de llevar a cabo esta modificación?

Gracias  ;-)
[/url]

eleon

Puedes obtener el valor de la clase a modificar y pasárselo a la clase "modificadora". Si lo quieres hacer por punteros aqui tienes un ejemplo:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

//La clase que contiene las variables que queremos modificar
class Clase_1
{
   public:
       int* devolver_puntero_coord_x () {return &coord_x;}
       int coord_x; //La variable está declarada como pública para comprobar si lo hemos hecho bien.
};

//La clase desde la cual vamos a modificar los valores de la clase superior
class Clase_2
{
   public:
       void modificar_coord_x (int* coord_x, int nuevo_valor);
};

void Clase_2::modificar_coord_x (int* coord_x, int nuevo_valor)
{
   *coord_x = nuevo_valor;
}

int main ()
{
   Clase_1 objeto_modificado;
   objeto_modificado.coord_x = 10; //Le damos un valor inicial para ver si se modifica o no
   cout << "Coordenada X: " << objeto_modificado.coord_x; //Comprobamos que el valor inicial almacenado es 10

   Clase_2 objeto_modificador; //Objeto de la clase desde la que queremos hacer modificaciones
   objeto_modificador.modificar_coord_x (objeto_modificado.devolver_puntero_coord_x(), 20); //Llamamos a la funcion para modificar el valor.
                                                                        //Como primer parámetro le pasamos el puntero con la función de la Clase 1.
                                                                        //Como segundo parámetro le pasamos el nuevo valor.

   cout << endl << "Coordenada X: " << objeto_modificado.coord_x; //Comprobamos si se ha modificado o no.

   cin;
   return 0;
}


Saludos.