Problem w dziedziczeniu [SFML 2.0]
Ostatnio zmodyfikowano 2015-05-24 17:28
jarek20 Temat założony przez niniejszego użytkownika  | 
Problem w dziedziczeniu [SFML 2.0] » 2015-05-24 13:32:24 Witam mam problem gdyż tworzę grę w oparciu o klasy pochodne #ifndef PLANET_H #define PLANET_H #include <SFML/Graphics.hpp>
  class PObject     : public sf::Shape { public:     sf::Vector2f velocity;     unsigned int gmass;          virtual void create();     virtual void centerOrigin();     virtual void pull( PObject * );     virtual void fupdate(); };
  class Planet     : public PObject      , public sf::CircleShape { public:     Planet(); };
  #endif  
  Problem w tym ,że gdy tworze objekt typu Planet to wyrzuca mi ze niektóre funkcje wystepuja podwojnie. Myślałem że skoro sf::Circleshape dziedziczy po sf::Shape to nie będzie problemu i się uzupełnią. Będe wdzięczny jak ktos mi pokaże jak to zrobić.  | 
 | 
Monika90  | 
» 2015-05-24 14:53:05 | Problem w tym ,że gdy tworze objekt typu Planet to wyrzuca mi ze niektóre funkcje wystepuja podwojnie. Myślałem że  |  
 To dziwne, bo przede wszystkim powinno Ci wyrzucić, że klasa Planet jest abstrakcyjna, z powodu funkcji sf::Shape::getPointCount i sf::Shape::getPoint. Nie można tworzyć obiektów klas abstrakcyjnych.  | 
 | 
jarek20 Temat założony przez niniejszego użytkownika  | 
» 2015-05-24 17:17:27 Tak, wystąpiły dwa błędy ale zapomniałem napisać że ten o abstrakcyjnej klasie naprawiłem. Robię teraz trochę inne podejście ale chciałbym wiedzieć czy jest taka możliwość ze tak 'uzupełnic' te funkcje z Shape przez circleshape  | 
 | 
jarek20 Temat założony przez niniejszego użytkownika  | 
» 2015-05-24 17:28:49 Mam takie rozwiązanie na około: class PObject     : public sf::Shape { public:     sf::Vector2f velocity;     unsigned int gmass;     virtual void create();     virtual void pull( PObject * );     virtual void fupdate(); };
  class Planet     : public PObject {     sf::CircleShape t; public:     Planet();     Planet( float );     unsigned int getPointCount() const     {         return t.getPointCount();     }     sf::Vector2f getPoint( unsigned int index ) const     {         return t.getPoint( index );     }     void setRadius( float r )     {         t.setRadius( r );         update();     }     float getRadius()     {         return t.getRadius();     }     void centerOrigin(); };
  i niby działa ale i tak jak ktoś wie jak rozwiązać ten problem w bardziej 'elegancki' sposób to proszę o podpowiedź. (Oczywiście pomijając przerzucenie funkcji do odzielnego pliku bo to jest w trakcie :) )  | 
 | 
|  « 1 »  |