1

voilà j'ai un probleme de dynamic cast avec visual C++sad

j'ai 2 classes: CTools et CTButton, CTButton dérive de CTools.
Je voudrai savaoir si je peux convertir un pointeur de type CTools en CTButton, donc je fais:
CTButton* pCTButton;
if (pCTButton = dynamic_cast<CTButton*>(pCTools))
et là j'ai le warning suivant:
i:\documents and settings\jackosking\bureau\projet info\sources\ctevent.cpp(10) : warning C4541: 'dynamic_cast' used on polymorphic type 'class CTools' with /GR-; unpredictable behavior may result
sad

2

Ou est le pb ?

3

je pourai bien faire un cast (CTools*), mais si apres je veux utiliser une methode specifique a CTButton, j'aurai un erreursad
comment resoudre ce probleme?

4

au pif, en allant dans la config du projet et en enlevant /GR-, ça arrange pas les choses ? cheeky

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

5

C'est laquelle cette option ?

6

ca n'arrange pas les chose ca fait planté le programme runtime je sais plus quoi...

7

File la description de tes classes.

8

#ifndef CTButton_h
#define CTButton_h
#include "SDL.h"
#include "CSDL.h"
#include "CTools.h"
#include "CTLabel.h"
#include "CFont.h"
#include "CTPicture.h"
#include <iostream>
using namespace std;

class CTButton : public CTools
{
 public:
	 CTButton(int _x, int _y, char *_pText, CFont *_pCFont, CTPicture *_pButtonPicture, CSDL *_pCSDL );
  void Draw();
  void OnMouseLeft(int _x, int _y);
  void OnMouseOn(int _x, int _y);
  void OnMouseNotOn(int _x, int _y);
  bool GetButtonState();
 private:
  CTLabel Label;
  bool bButtonstate;
  bool bMouseOn;
  enum{
      MOUSENOTON,MOUSEON};
  CTPicture *pButtonPicture;
};
#endif

#ifndef CTools_h
#define CTools_h
#include "CSDL.h"
class CTools
{
 public:
  CTools(){}
  CTools(int _x, int _y, CSDL *_pCSDL); 
  virtual ~CTools(){};
  virtual void Draw()=0;
  void SetXY(int _x, int _y);
  int GetX();
  int GetY();
  int GetW();
  int GetH();
  void SetSDL(CSDL *_pCSDL);
  virtual void OnMouseLeft(int _x, int _y){}
  virtual void OnMouseOn(int _x, int _y){}
  virtual void OnMouseNotOn(int _x, int _y) {}
 protected:
  void SetWH(int _w, int _h);
  int x,y,w,h;
  CSDL *pCSDL;
};
  
#endif