CRTP et typedef, est-ce possible ?

CRTP et typedef, est-ce possible ? - C++ - Programmation

Marsh Posté le 12-06-2010 à 19:40:26    

J'essaye de faire des choses que je ne comprends pas très bien, et mon compilateur refuse de manger ça :
 

Code :
  1. template<typename Derived> class Problem
  2. {
  3. typedef typename Derived::StateType TrucMuche;
  4. };
  5. class SSPProblem : public Problem<SSPProblem>
  6. {
  7.  typedef unsigned int StateType;
  8. };


 
1>..\..\Code\tests\sspProblem.cpp(3) : error C2039: 'StateType' : n'est pas membre de 'SSPProblem'
 
J'imagine que c'est parce qu'au moment où le template est instancié, la définition de ma classe SSPProblem n'est pas finie. Est-ce possible de passer outre ?
 
Merci !
 

Reply

Marsh Posté le 12-06-2010 à 19:40:26   

Reply

Marsh Posté le 12-06-2010 à 22:21:35    

Code :
  1. class SSPProblem;
  2. template<class T> struct state_type;
  3. template<> struct state_type<SSPProblem>
  4. {
  5.   typedef unsigned int type;
  6. };
  7. template<typename Derived> class Problem
  8. {
  9. typedef typename state_type<Derived>::type TrucMuche;
  10. };
  11. class SSPProblem : public Problem<SSPProblem>
  12. {
  13. };


 
Un niveau d'indirection de plus et hop

Reply

Marsh Posté le 12-06-2010 à 23:57:01    

OK, merci bien.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed