Dev - C++ - OOP actualizar variable

 
Vista:
sin imagen de perfil

OOP actualizar variable

Publicado por Jesus (2 intervenciones) el 16/09/2021 18:10:30
Tengo el siguiente código en C++ y deseo actualizar unas variables de una clase, desde el método de otra clase, pero no me es posible. En el código, necesito que cuando se haga el llamado al método de la clase a, desde allí llamar al método C de la clase c, y actualizar las variables prC y puC. Les agradezco la atención prestada.
Si el método C de la clase c lo llamo varias veces desde el main(), las variables si se actualizan.

#include <iostream>
#include <windows.h>
#include<conio.h>
#include<string>

using namespace std;

class c{
private:
int prC;
public:
c();
int puC;
void metodoC();
};
c::c(){
prC = 1;
puC = 1;
}
void c::metodoC(){
cout <<"MetodoC. Variable prC:"<<prC++ <<endl;
cout <<"MetodoC. Variable puC:"<<puC++ <<endl<<endl;
}
class a{
private:
int prA;
public:
a();
int puA;
void metodoA(c CC);
};
a::a(){
prA=5;
puA=5;
}
void a::metodoA(c CC){
cout <<"MetodoA. Variable prA:"<<prA++ <<endl;
cout <<"MetodoA. Variable puA:"<<puA++ <<endl<<endl;
cout <<"Desde MetodoA Llamando al MetodoC"<< endl;
CC.metodoC();
}
int main(){
a AAA;
c CCC;
for(int i=1;i<6;i++){
cout << "Desde main() llamando al metodoA"<<endl;
AAA.metodoA(CCC);
}
return 0;
}

/* Estos son los resultados por pantalla:
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

OOP actualizar variable

Publicado por anonymous (146 intervenciones) el 16/09/2021 21:05:43
Hola mira por lo que veo tu problema es que se está pasando por copia el argumento del método `a:: metodoA' eso significa que cuando tu llamas al método `c::metodoC' este se aplica sobre `CC' y no sobre el argumento que tu pases, es decir `CCC' en este caso, lo que tienes que hacer es declarar a `CC' como un puntero o una referencia a::metodoA(c* CC) o a::metodoA(c& CC) para que funcione, ya que si utilizas un puntero o una referencia estarás trabajando sobre el argumento pasado, osea `CCC' en vez de `CC' que es lo que necesitas, cualquier cosa avísame por este medio, suerte, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

OOP actualizar variable

Publicado por Jesus (2 intervenciones) el 16/09/2021 22:07:50
Ok Luis. Solucionado. Muchas gracias. El código queda así:

#include <iostream>
#include <windows.h>
#include<conio.h>
#include<string>

using namespace std;

class c{
private:
int prC;
public:
c();
int puC;
void metodoC();
};
c::c(){
prC = 1;
puC = 1;
}
void c::metodoC(){
cout <<"MetodoC. Variable prC:"<<prC++ <<endl;
cout <<"MetodoC. Variable puC:"<<puC++ <<endl<<endl;
}
class a{
private:
int prA;
public:
a();
int puA;
void metodoA(c* CC);
};
a::a(){
prA=5;
puA=5;
}
void a::metodoA(c* CC){
cout <<"MetodoA. Variable prA:"<<prA++ <<endl;
cout <<"MetodoA. Variable puA:"<<puA++ <<endl<<endl;
cout <<"Desde MetodoA Llamando al MetodoC"<< endl;
CC->metodoC();
}
int main(){
a AAA;
c CCC;
for(int i=1;i<6;i++){
cout << "Desde main() llamando al metodoA"<<endl;
AAA.metodoA(&CCC);
}
return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

OOP actualizar variable

Publicado por anonymous (146 intervenciones) el 16/09/2021 22:29:15
Perfecto, cualquier cosa estoy a la orden, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar