Как расширить существующий шаблон в C ++? - PullRequest
1 голос
/ 11 мая 2011

Я работаю с устаревшим кодом шаблона, основанного на

  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

1 Ответ

1 голос
/ 11 мая 2011

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

Вы можете сделать что-то вроде,

Foo Bar (const float f)
{
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...