Bonjour à tous,
Je n'arrive pas à trouver d'exemples pour ce que j'aimerais faire en C++, mais que j'arrive à faire en Java et en C#.
Voici un exemple de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 template<typename T : public IDetectable> class IDetector { public: virtual ~IDetector(void) {} virtual vector<T*> find() = 0; };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class BoxDetector : public IDetector<Box> { public: BoxDetector(void); virtual ~BoxDetector(void); vector<Box*> find() { /* ... */ } };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class IDetectable { public: virtual ~IDetectable(void) {} };Ce qui me permettrait de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Box : public IDetectable { public: Box(void); virtual ~Box(void); };
Le problème que je rencontre est que "BoxDetector" n'est pas reconnu comme étant "IDetector<IDetectable>". De plus que je crois que "template<class T : public IDetectable>" n'est pas une expression valide en C++ même si cela ne cause pas d'erreur de compilation?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 IDetector<IDetectable>* mDetector = new BoxDetector(); vector<IDetectable*> mBoxes = mDetector->find();
Ceci ne compile pas car IDetectable n'est pas un nom de type valide:
Je code dans Visual Studio et je n'utilise aucune libraire comme BOOST etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 IDetector<IDetectable>* detector;
Merci!
Partager