Gra w statki. Tworzenie obiektów jednej klasy i odwoływanie się do nich
Ostatnio zmodyfikowano 2014-05-13 22:41
kamilall234 Temat założony przez niniejszego użytkownika |
Gra w statki. Tworzenie obiektów jednej klasy i odwoływanie się do nich » 2014-05-13 15:07:18 Witam. Mam problem ponieważ tworze gre w statki dla nauki klas. Mam pytanie odnośnie tworzenia kilku obiektów tej samej klasy w programie głównym. Tworze to za pomocy wskaźnika tablicy dynamicznej. Tylko nie wiem jak potem mam się odwoływać do potrzebnych mi danych. Podane klasy poniżej są przykłądowymi. Dopiero zaczynam. Jak mam się odwoła do x i y jednego z trzeh obiektow lodki ? t.pokaz_wspol() nie jest dobrym pomysłem
class Statek { protected: int x; int y; public: Statek() { wspolrzedne(); }; void wspolrzedne(); };
class lodka : Statek { private: int wielkosc=1; public: lodka() : Statek() {}; void pokaz_wspol() { cout<<x<<" " <<yy };
};
int main() { int *t = new int[3]; for (int i=0;i<3;i++) { lodka t; } }; |
|
Jacob99 |
» 2014-05-13 15:56:28 A jak przepraszam chcesz się odwoływać do tych obiektów? są tylko trzy sposoby odwoływania się do obiektów klasy: 1. Przez obiekt i notację z kropką class T { public: int x; T obiektT. obiektT.x 2. Przez wskaźnik i notację ze strzałką. Ale do tych notacji zmienna x musi być publiczna. 3. Przez publiczną funkcję składową klasy class T { public: wypiszX() { return this->x } private: int x; };
T obiekt, * ptr; obiekt.wypiszX(); ptr = & obiekt; ptr->x;
Innego wyjścia nie ma. I zapoznaj się lepiej z tym http://cpp0x.pl/kursy/Kurs-STC/169 |
|
kamilall234 Temat założony przez niniejszego użytkownika |
» 2014-05-13 22:03:44 Chodzi mi o tworzenie obiektów danej klasy. Jeżeli robie to tablicą dwuwymiarową dynamiczna, w programie głównym w pętli main. Mogę tworzyć np: class Miejscowosc { int x;
public: void wyswietl();
Miejscowosc(string nazwa); }; | Klasa pochodna class Miasto : Miejscowosc { int x;
public: void wyswietl();
Miasto : Miejscowosc(){}; }; | i teraz w programie głównym chcę utworzyć w 3 miasta za pomocą tablicy dynamicznej, i odczytać za pomocą funkcji wyswietl() ich numer załóżmy.
Miasto *tab = new Miasto[3]; for(int i=0;i<3;i++) Miasto tab; //wywoluje konstruktor
|
Dlaczego wpisuje mi 6 razy miejscowosc, tak jakby brało najpierw konstruktor Miasta, a potem Miejscowosci. Jak potem odwołac sie do numerów (x) odpowiednich miast ? |
|
colorgreen19 |
» 2014-05-13 22:41:29 Bo używasz dziedziczenia to najpierw konstruktor pracuje z obiektu bazowego, dopiero potem z pochodnego? Po co deklarujesz 2 razy int x? zrób w Miejscowości protected: int x; i bedziesz miał to tez w miescie. Program sam wie do ktorego x ma się odwołac bo to jest dziedziczenie, zawsze bierze z "najniższego" poziomu hierarchii dziedziczenia. Miejscowosc(string nazwa); //.. Miasto : Miejscowość(){} |
??? Poczytaj bardziej o konstruktorach a potem doczytaj o dziedziczeniu |
|
« 1 » |