Jak wyłuskać orginalny obiekt i modyfikować go?
Ostatnio zmodyfikowano 2016-03-10 14:23
mrci Temat założony przez niniejszego użytkownika |
Jak wyłuskać orginalny obiekt i modyfikować go? » 2016-03-10 12:29:30 Cześć!
Mam pewien problem! Posiadam dwie klasy,10 obiektów drugiej występują w pierwszej.Problem jest następujący: getujac jeden z obiektów klasy drugiej i wprowadzajac na nim zmiany to nie utrwalają sie one. Podejrzewam, że raczej działam na kopii tego obiektu a nie orginale, lecz nie mam pojęcia jak dostać się własnie do tego orginału.
#include <iostream> using namespace std;
class Druga{ private: int liczba; public: Druga(){liczba=0;} void set_liczba(int a){liczba=a;} void show(){cout<<liczba<<endl;} };
class Pierwsza{ private: Druga *d; public: Pierwsza(){d=new Druga[10];} Druga get(int id){return d[id];} };
int main() { Pierwsza p; p.get(5).set_liczba(33); p.get(5).show(); }
Jak widać obiekt nr 5. nie zmienił się na 33. Z góry dziękuję za pomoc :) |
|
michal11 |
» 2016-03-10 13:46:36 Funkcja get zwraca obiekt czyli jest tworzona kopia, oddaj referencje i powinno działać, dodatkowo musisz napisać jeszcze destruktor który będzie zwalniał pamięć alokowaną w konstruktorze. |
|
mrci Temat założony przez niniejszego użytkownika |
» 2016-03-10 14:23:20 Dzięki za radę :) Poniżej wrzucam działający kod, w razie jak by ktoś kiedyś potrzebował :P
#include <iostream> using namespace std;
class Druga{ private: int liczba; public: Druga(){liczba=5;} void set_liczba(int a){liczba=a;} void show(){cout<<liczba<<endl;} };
class Pierwsza{ private: Druga *d; public: Pierwsza(){d=new Druga[10];} Druga* get(int id){return &d[id];} };
int main() { Pierwsza p; p.get(5)->set_liczba(33); p.get(5)->show(); } |
|
« 1 » |