Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Gra w statki. Tworzenie obiektów jednej klasy i odwoływanie się do nich

Ostatnio zmodyfikowano 2014-05-13 22:41
Autor Wiadomość
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;
    }
};
P-109856
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ą
C/C++
class T { public: int x;
    //...};
    T obiektT.
    obiektT.x

2. Przez wskaźnik i notację ze strzałką.
C/C++
T * ptrT;
ptrT->x;

Ale do tych notacji zmienna x musi być publiczna.

3. Przez publiczną funkcję składową klasy
C/C++
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
P-109860
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 ?
P-109902
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
P-109906
« 1 »
  Strona 1 z 1