Wskaźnik jako dana składowa klasy, problem z użyciem obiektu tej klasy w innej funkcji.
Ostatnio zmodyfikowano 2013-08-12 14:20
rwfx1911 Temat założony przez niniejszego użytkownika |
Wskaźnik jako dana składowa klasy, problem z użyciem obiektu tej klasy w innej funkcji. » 2013-08-11 13:34:29 Mam sobie klase która zawiera wskaźnik, tworze obiekt w jednej funkcji, dodaje do wektora i gdy próbuje ten obiekt użyć w drugiej funkcji(biorąc go z wektora) wiadomo, że jest krasz bo wskaźnik pokazuje źle. W pewnej książce wyczytałem, że może pomóc mi konstruktor kopiujący(nie wchodze w inne szczegóły C++11, boost) bo chce to zrobić po staremu. Problem w tym, że konstruktor kopiujący tworzy drugi taki sam obiekt więc co mi po tym skoro ten obiekt tak samo jak ten pierwszy nie będzie istniał. Jak mogę to naprawić?
class CTest { TiXmlElement * m_pRoot; public: CTest( void ); void JakasFunkcja( void ); };
std::vector < CTest > pojemnik;
int FuncA( void ) { CTest nowy(); pojemnik.push_back( nowy ); return 1; }
int FuncB( void ) { CTest istniejacy = pojemnik.at( 0 ); istniejacy.JakasFunkcja(); return 1; }
|
|
MordiJC |
» 2013-08-11 23:07:07 class CTest { TiXmlElement * m_pRoot; public: CTest() { } CTest( CTest & c ) { } void JakasFunkcja() { } };
std::vector < CTest * > pojemnik;
int FuncA() { CTest * nowy = new CTest; pojemnik.push_back( nowy ); return 1; }
int FuncB() { CTest * istniejacy = pojemnik.at( 0 ); istniejacy->JakasFunkcja(); return 1; } Jeżeli chcesz się pozbyć tego objektu, to użyj: delete istniejacy; istniejacy = 0; delete pojemnik.at( 0 ); pojemnik.at( 0 ) = 0; |
|
rwfx1911 Temat założony przez niniejszego użytkownika |
» 2013-08-12 14:20:12 nie pomyslalem o dynamicznej alokacji, dzieki! teraz chodzi. |
|
« 1 » |