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

Error w klasie podstawowej

Ostatnio zmodyfikowano 2016-04-10 11:42
Autor Wiadomość
Garniturek
Temat założony przez niniejszego użytkownika
Error w klasie podstawowej
» 2016-04-10 10:40:34
Witam, mam klasę z której dziedziczą dwie inne klasy i error kiedy chcę utworzyć element klasy podstawowej:
error C2259: 'cFigura' : cannot instantiate abstract class

C/C++
class cFigura
{
protected:
    float x;
    float y;
   
public:
    cFigura( float _x, float _y );
    cFigura();
    void nic();
    virtual void rysuj() = 0;
};
class cProstkat
    : public cFigura
{
    float x, y;
    float a, b;
    float obwiednia_x, obwiednia_y;
    float R, G, B;
public:
    cProstkat( float _x, float _y, float _a, float _b, float _obwiednia_x, float _obwiednia_y, float _R, float _G, float _B );
    cProstkat();
    virtual void rysuj();
};
class cKolo
    : public cFigura
{
    float a, b;
public:
    cKolo();
    cKolo( float _a, float _b );
    virtual void rysuj();
};
C/C++
int main( int argc, char * argv[] )
{
    cFigura fig; //TUTAJ ERROR
    cProstkat pr( 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 0.5, 0.5, 0.5 );
    cProstkat pr2;
P-147139
Lora
» 2016-04-10 10:52:32
cFigura jest klasą abstrakcyjną, więc nie można utworzyć jej obiektu.
C/C++
virtual void rysuj() = 0;
Dodanie takiej metody do klasy czyni ją abstrakcyjną.
P-147141
Garniturek
Temat założony przez niniejszego użytkownika
» 2016-04-10 11:07:35
Dziękuje bardzo! :)
Mam jeszcze jedno pytanko. Co jest źle w tych konstruktorach, chciałbym, aby x,y z cFigury był dziedziczone do cProstokat, ale wartości x, y cProstokat to są przypadkowe liczby, a nie np. (0,0)

C/C++
cFigura::cFigura()
{
    x = 0; y = 0;
}
cFigura::cFigura( float _x, float _y )
{
    x = _x;
    y = _y;
}
cProstkat::cProstkat()
    : cFigura( x, y )
{
    a = 1; b = 1;
    obwiednia_x = 1; obwiednia_y = 1;
    R = 0.5; G = 0.5; B = 0.5;
}
cProstkat::cProstkat( float _x, float _y, float _a, float _b, float _obwiednia_x, float _obwiednia_y, float _R, float _G, float _B )
    : cFigura( _x, _y )
{
    a = _a; b = _b;
    obwiednia_x = _obwiednia_x;
    obwiednia_y = _obwiednia_y;
    R = _R; G = _G; B = _B;
}
P-147142
Lora
» 2016-04-10 11:14:50
Rozumiem, że przy wywołaniu konstruktora domyślnego klasy cProstokat, chcesz wywołać domyślny konstruktor klasy cFigura:
C/C++
cProstkat::cProstkat()
    : cFigura()
{
    a = 1; b = 1;
    obwiednia_x = 1; obwiednia_y = 1;
    R = 0.5; G = 0.5; B = 0.5;
}
Używając na liście inicjalizacyjnej cFigura( x, y ) przekazywałeś do klasy bazowej niezainicjalizowane zmienne x, y.
P-147143
Garniturek
Temat założony przez niniejszego użytkownika
» 2016-04-10 11:42:30
Działa, jeszcze raz dzięki :)
P-147146
« 1 »
  Strona 1 z 1