2011-05-11 7 views
1

Je travaille avec le code hérité d'un modèle basé surComment étendre un modèle existant en C++?

template<class keyType, class dType> Foo Bar(const dType val) 

Quelque part dans ce code est un endroit où quelqu'un a fait une fonction de débogage comme ceci:

virtual void getDebugStr01(int db_id, OFCString & db_str) 
{ 
    //OFCStringStream ss; 
    if(db_id==0) 
    { 
     map<keyType, dType>::iterator it = m_stateData.begin(); 
     for(;it!=m_stateData.end();it++) 
     { 
      (it->second).getDebugStr01(db_str); 
     } 
    } 
} 

Maintenant, je dois utiliser la classe template avec un float. Est-ce qu'il y a un moyen de faire ça?

Actuellement je reçois un:

 
    error C2228: left of '.getDebugStr01' must have class/struct/union 
+0

Je suis confus. Ne pouvez-vous pas surcharger la méthode pour prendre un flottant en paramètre? Ou en faire un modèle de fonction? –

Répondre

1

getDebugStr01() doit être membre d'un class/struct. virtual méthodes ne peuvent pas être autonomes.

Vous pouvez faire quelque chose comme,

Foo Bar (const float f) 
{ 
... 
} 
Questions connexes