O co chodzi ? Nie można zmienić wartości zmiennej...

0

Napisałem poniższy kod (ćwiczenie na studia...).

http://pastebin.com/LF6Q53H9

Jest problem, otóż wartość zmiennej "dx" w drugiej części wykonywania kodu, tzn. tam, gdzie przeprowadzamy operacje na obiekcie "b" klasy "punktkol", nie zmienia się.

user image

Co może być tego powodem, może to ja gdzieś robię błąd ? Powinienem użyć wskaźników ? Z obiektem klasy bazowej nie ma takiego problemu.

1

Błąd jest w konstruktorze klasy punktkol. Dziedziczy ona po klasie punkt, więc musisz wywołać konstruktor klasy punkt w konstruktorze klasy punktkol.

0
 class punktkol : public punkt
{
private:
    int kol;
public:
    punktkol(float xx=0.0, float yy=0.0, int kolor=0);
    void wyswietl(){punkt::wyswietl();cout<<"Kolor: "<<kol<<"\n";}
    void koloruj(int kolor){kol=kolor;}
};

punktkol::punktkol(float xx, float yy, int kolor):punkt(xx,yy)
{
    kol=kolor;
}

Poprawiłem, tylko, że są błędy. Więc nie do końca poprawione...

In constructor 'punktkol::punktkol(float, float, int)':|
no matching function for call to 'punkt::punkt(float&, float&)'|
candidates are: punkt::punkt(const punkt&)|punkt::punkt()|
||=== Build finished: 1 errors, 0 warnings ===|
1

Nie masz też konstruktora klasy bazowej. Nie pokazało to się jako widoczny błąd ze względu na to, że akurat na twoim komputerze używając tego kompilatora na stosie w tym miejscu było 0.

0

Dziękuję za pomoc. Teraz jest ok.

 
class punkt
{
private:
    float x, y;
public:
    punkt(float xx=0.0, float yy=0.0);
    void init(float xx=0.0, float yy=0.0){x=xx;y=yy;}
    void wyswietl(){cout<<"Wspolrzedne: "<<x<<" "<<y<<"\n";}
    void przesun(float dx, float dy){x+=dx;y+=dy;}
};

punkt::punkt(float xx, float yy)
{
    x=xx; y=yy;
}

class punktkol : public punkt
{
private:
    int kol;
public:
    punktkol(float xx=0.0, float yy=0.0, int kolor=0);
    void wyswietl(){punkt::wyswietl();cout<<"Kolor: "<<kol<<"\n";}
    void koloruj(int kolor){kol=kolor;}
};

punktkol::punktkol(float xx, float yy, int kolor):punkt(xx,yy)
{
    kol=kolor;
}

Nie wiem jak mogłem przeoczyć konstruktor w klasie bazowej i próbować go używać w pochodnej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1