heritage multiple virtuel et warning 4250
	
	
		Bonjour, oui encore un post sur l'héritage multiple mais je n'ai pas trouvé de réponses :?
Voilà le code testé :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 
 | #include <iostream>
#include <string>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
 
class Controller
{
public:
 
	virtual ~Controller() {};
	virtual bool isTimeBased() const = 0;
	virtual void update(float dt) const = 0;
};
 
 
class TimeBasedController : virtual public Controller
{
public:
 
	virtual ~TimeBasedController() {};
	bool isTimeBased() const { return true; }
};
 
class RealTimeInputController : virtual public Controller
{
public:
 
	virtual ~RealTimeInputController() {}
	bool isTimeBased() const { return false; }
};
 
 
class PathController : virtual public Controller
{
public:
 
	virtual ~PathController() {};
	void update(float dt) const { getPath(dt); }
	virtual void getPath(float dt) const = 0;
};
 
 
class MyPathController : public PathController, public TimeBasedController
{
public:
 
	void getPath(float dt) const { std::cout<< "getting path 1" << std::endl; }
};
 
class MyPathController2 : public PathController, public RealTimeInputController
{
public:
 
	void getPath(float dt) const { std::cout<< "getting path 2" << std::endl; }
};
 
 
int main()
{
   MyPathController p1;
   MyPathController2 p2;
   std::string s1,s2;
   p1.isTimeBased() ? s1 = "p1 is time based" : s1 = "p1 is not time based";
   p2.isTimeBased() ? s2 = "p2 is time based" : s2 = "p2 is not time based";
 
   std::cout << s1 << std::endl;
   std::cout << s2 << std::endl;
   p1.update(0);
   p2.update(0);
 
   system("pause");
 
   return 0;
} | 
 Et maintenant à la compilation avec visual express 2008 en /W3 j'obtiens ces warning :
	Code:
	
| 12
 3
 4
 
 | warning C4250: 'MyPathController'*: hérite de 'TimeBasedController::TimeBasedController::isTimeBased' via la dominance [...]*: voir la déclaration de 'TimeBasedController::isTimeBased'
warning C4250: 'MyPathController'*: hérite de 'PathController::PathController::update' via la dominance [...]*: voir la déclaration de 'PathController::update'
warning C4250: 'MyPathController2'*: hérite de 'RealTimeInputController::RealTimeInputController::isTimeBased' via la dominance [...]*: voir la déclaration de 'RealTimeInputController::isTimeBased'
warning C4250: 'MyPathController2'*: hérite de 'PathController::PathController::update' via la dominance [...]*: voir la déclaration de 'PathController::update' | 
 Mais la sortie obtenue est bien celle que j'attend:
	Code:
	
| 12
 3
 4
 5
 
 | p1 is time based
p2 is not time based
getting path 1
getting path 2
Appuyez sur une touche pour continuer... | 
 J'ai vu également ce lien concernant le warning, mais je ne suis quand même pas sûr que ce bout de code soit bien formé niveau c++...
Merci d'avance, bonne journée