2011-05-11 2 views
1

Я работаю с унаследованным кодом шаблона, который основан наКак расширить существующий шаблон на C++?

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

Где-то в этом коде есть место, где кто-то сделал функцию отладки, как это:

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); 
     } 
    } 
} 

Теперь мне нужно использовать класс шаблона с поплавком. Есть какой-либо способ сделать это?

В настоящее время я получаю:

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

Я запутался. Не можете ли вы просто перегрузить метод, чтобы принять float как параметр? Или создать шаблон функции? –

ответ

1

getDebugStr01() должен быть членом class/struct. virtual методы не могут стоять в одиночестве.

Вы можете сделать что-то подобное,

Foo Bar (const float f) 
{ 
... 
} 
Смежные вопросы