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 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(); };
int main( int argc, char * argv[] ) { cFigura fig; cProstkat pr( 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 0.5, 0.5, 0.5 ); cProstkat pr2;
|
|
Lora |
» 2016-04-10 10:52:32 cFigura jest klasą abstrakcyjną, więc nie można utworzyć jej obiektu. virtual void rysuj() = 0;
Dodanie takiej metody do klasy czyni ją abstrakcyjną. |
|
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) 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; }
|
|
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: 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. |
|
Garniturek Temat założony przez niniejszego użytkownika |
» 2016-04-10 11:42:30 Działa, jeszcze raz dzięki :) |
|
« 1 » |