kan man i c++ overrida funktioner från lägre bas klass om dom inte är virtuella?
kan man i c++ overrida funktioner från lägre bas klass om dom inte är virtuella?
För när jag har en klass tex
////////////////////////////////////////////////////////
#include "SDL/SDL.h"
#include <string>
#include "SDL/SDL_mixer.h"
#include "SDL/SDL_image.h"
using namespace std;
#ifndef PLAYER_H
#define PLAYER_H
class Model;
class Player {
private:
Model *model;
SDL_Rect *camera;
SDL_Rect hitbox;
int left;
int right;
int up;
int down;
public:
Player();
Player(Model *lol);
~Player(){}
void drawPlayer(SDL_Surface *screenen);
void updatePlayer();
void handleinput(SDL_Event keypressed);
Model *getModel();
void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip);
void setCamera();
SDL_Rect *getCamera();
void setHitBox(int x,int y,int w,int h);
void addHitx(int x);
void addHity(int y);
SDL_Rect getHitbox();
void setLeft(int temp);
void setRight(int temp);
void setUp(int temp);
void setDown(int temp);
int getLeft();
int getRight();
int getUp();
int getDown();
};
////////////////////////////////////////////////////////////////////////////
och denna
#include "SDL/SDL.h"
#include <string>
using namespace std;
#ifndef StandardPlayer_H
#define StandardPlayer_H
class StandardPlayer: public Player{
private:
SDL_Surface *test;
public:
StandardPlayer();
StandardPlayer(Model *lol);
~StandardPlayer(){}
void drawPlayer(SDL_Surface *screenen);
void updatePlayer();
void handleinput(SDL_Event keypressed);
};
//////////////////////////////////////////////////////////////////////////////
skriver jag sen såhär
player = new StandardPlayer(this);
så struntar den i att det är en standplayer och bara kör med players funktioner när jag tex skriver
player->drawPlayer(screenen);
Jag har fått det att gå med en annan klass men den bas klassen kör med virtuella funktioner, måste man det?
Ifall så är fallet är det ju helt värdelöst.