У меня возникли проблемы с ошибками «неопределенной ссылки на». Я не могу быть в состоянии разместить код, но заявления и способ, которым я звоню функции заключаются в следующем:Мгновенные функции шаблонов C++
Объявления:
template <typename T>
int pitch_detect(deque<T>& x, int offset, int len);
template <typename T>
int is_voiced(
deque<T>& x, int offset, int len,
double avg_energy, int pre_voice,
short& s_flag,
long nsamples
);
Я зову вышеуказанные функции следующим образом:
x = is_voiced(superFrame_, cur_offset_, f_len_,
avgEnergy_, frame_voicing_[1], silence_flag_, nsamples_);
y = pitch_detect(superFrame_, cur_offset_, f_len_);
Вышеуказанные утверждения (где я вызываю функции), помечены как ошибки. Это сообщение:
неопределенная ссылка на `Int is_voiced (станд :: деку> &, INT, INT, двойных, INT, короткие &, длинная)
неопределенная ссылка на` Int pitch_detect (станд :: Deque> &, Int, Int)»
Любая помощь в расшифровке вышеуказанных ошибок можно только приветствовать. Спасибо, Sriram
Редактировать: Указанные выше функции определены в отдельном заголовке и соответствующем файле C++. У меня нет проблем, когда я пытаюсь скомпилировать их и создать объектный файл. Эти ошибки видны на стадии компоновщика.
Ах! Да. Это была проблема. Я явно не создавал шаблоны. Я новичок в шаблонах и многому научился. Задача решена! Спасибо, Дэвид! – Sriram
Вам действительно нужно использовать явное создание экземпляра? В большинстве случаев лучше просто предоставить определение шаблона в заголовке и заставить компилятор имплицитно инстанцировать его при использовании. –