Bonjour alors je vous expose mon probleme. Je suis entrain de tenter de creer un petit jeu. Dans celui-ci j'ai implementé trois classes :
voici le code du run de la classe thread juste pour exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class Thread { private: Glib::Thread* _thread; bool _is_joignable; bool _is_running; public: static void init(); Thread(bool joignable=FALSE); virtual ~Thread(); void start(); virtual void run(); virtual void stop(); bool isJoignable()const; bool isRunning()const; static void sleep(unsigned long delay); };
Puis j'ai concu la cette classe qui herite de thread
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void Thread::run(){ while(true)cout << "Thread.run" << endl; }
Voici le corps de la méthode run ke j'ai cree juste pour voir le deroulement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 template <class T> class Agent : public Thread { private: queue<T>_messages; string _name; Glib::Mutex _mutex; //Semaphore *_sem; public: Agent(void); Agent(string name); virtual ~Agent(void); virtual void initialize(); virtual void finalize(); bool haveMessages()const; T readMessage(); void sendMessage(T message); string getName()const; virtual void run(); };
Et enfin voila mon probleme j'ai cree cette classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template <class T> void Agent<T>::run(){ while(true)cout << "Agent.run" << endl; }
Lors de mon execution pourquoi c'est la méthode run de la classe Agent qui est exécutée et non la méthode run de la classe GameEngineKeyboardReaderAgent que j'ai cree?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class GameEngineKeyboardReaderAgent: public Agent<XmlMessage>{ private: GameEngine* _engine; unsigned long _delay; public: GameEngineKeyboardReaderAgent(GameEngine* engine,unsigned long delay=250000); virtual ~GameEngineKeyboardReaderAgent(); virtual void run(); };
J'espere que quelqu'un trouvera la solution a mon probleme.
Partager