функция шаблона не распознает - PullRequest
1 голос
/ 16 октября 2019

У меня есть класс

template <class T>
class BaseStrategy
{
template<typename Period, typename Rep>
void print_time(tm t, chrono::duration<Rep, Period> fraction);
}

, и реализация (в том же файле .h)

template <typename T>
template <typename Rep, typename Period >
void BaseStrategy<T>::print_time(tm t, std::chrono::duration<Rep, Period> fraction)
{
    /some code/
}

, но когда я компилирую код, я получаю следующую ошибку:

ошибка: прототип для 'void BaseStrategy :: print_time (tm, std :: chrono :: duration <_Rep, _Period>)' не соответствует ни одному в классе 'BaseStrategy' void BaseStrategy ::print_time (tm t, std :: chrono :: длительность) ^ ~~~~~~~~~~~~~~

/ home / yaodav / Desktop / git_repo / test / include / BaseStrategy. ч: 216: 10: ошибка: кандидат есть: шаблон шаблона void BaseStrategy :: print_time (tm, std :: chrono :: duration) void print_time (tm t, chrono :: длительность);

почему произошла эта ошибка? и как это исправить

1 Ответ

2 голосов
/ 16 октября 2019

Порядок аргументов шаблона в определении

template <typename Rep, typename Period >
void BaseStrategy<T>::print_time(tm t, std::chrono::duration<Rep, Period> fraction)

не соответствует порядку параметров шаблона в объявлении

template<typename Period, typename Rep>
void print_time(tm t, chrono::duration<Rep, Period> fraction);

Любая запись

template<typename Rep, typename Period>
void print_time(tm t, chrono::duration<Rep, Period> fraction);

или (более запутанно)

template<typename Period, typename Rep>
void print_time(tm t, chrono::duration<Period, Rep> fraction);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...