Problem z klasami.
Ostatnio zmodyfikowano 2017-05-15 10:24
MoravenTolo Temat założony przez niniejszego użytkownika |
Problem z klasami. » 2017-05-08 19:53:53 Mam takie dwa problemy: 1. Mam dwie jakies dowolne klasy User i Obiekt i chcę z poziomu klasy User zmienic wartość bool x z false na true. Mam problem z funkcją, gdyż prawdopodnie źle ją napisalem oraz z dostaniem się do setteraX w tej funkcji by ustawic wartość na true. 2. Chce stworzyć za pomocą vectora kilka obiektów i potem je wszystkie wyswietlic. Tutaj obiekt ma tylko jedna zmienna true lub false, ale chodzi o sam sens i czy dobrze korzystam z tworzenia kilku obiektów naraz za pomocą vectora i jak je wszystkie wyswietlić? #include "stdafx.h" #include<iostream> #include<string> #include<vector> using std::string; using std::cout; using std::endl;
class User { string nazwa; public: void User::zmienX( const Obiekt & obiekt ) { if( obiekt.getX() == false ) obiekt.setX( true ); } };
class Obiekt { bool x; public: Obiekt::Obiekt( bool x ) { cout << "konstruktor obiektu"; } Obiekt::Obiekt() { cout << "destruktor obiektu"; } void Obiekt::wyswietl() { cout << "x = " << x << endl; } bool Obiekt::getX() const { return x; } void Obiekt::setX( bool x ) { Obiekt::x = x; } };
int main() { Obiekt * o = new Obiekt( false ); o->wyswietl(); std::vector < Obiekt *> obiekt = { new Obiekt( false ), new Obiekt( true ) }; obiekt->wyswietl(); system( "pause" ); return 0; } [ / cpp ] |
|
michal11 |
» 2017-05-08 20:02:43 Moim zdaniem klasa Obiekt jest dobrze napisana. W main() masz wyciek pamięci, nie zwalniasz zaalokowanej pamięci. Jeżeli chcesz wywołać funkcję na wszystkich obiektach w vectorze to wystarczy zwykła pętla std::vector < Type > MyTypes;
for( const Type & t: MyTypes ) { t.fun(); }
|
|
MoravenTolo Temat założony przez niniejszego użytkownika |
» 2017-05-15 09:56:18 Punkt drugi już jakoś tam zrobiłem, ale czy pomoże ktoś jeszcze z tym punktem pierwszym? Ze zmianną wartości boola z poziomu klasy User? |
|
michal11 |
» 2017-05-15 10:09:21 Nie rozumiem jaki masz problem, masz dobrze napisaną klasę Obiekt, nie powinieneś się odwoływać bezpośrednio do zmiennej tej klasy tylko korzystać z funkcji. Prawdopodobnie dostajesz błędy kompilacji typu undefined reference jeżeli tak to zamień miejscami deklaracje klas User i Obiekt, jeżeli to coś innego to klej aktualny kod i dokładne błędy jakie dostajesz. |
|
karambaHZP |
» 2017-05-15 10:24:49 |
|
« 1 » |