我遇到了一些“undefined reference to”错误的问题。我未必能够发布的代码,但该声明和我打电话的功能方式如下:实例化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, 双,整型,短&,长)
未定义参考`诠释 pitch_detect(std :: deque> &,int,int)'
任何帮助解码上述错误是最受欢迎的。 谢谢, Sriram
编辑: 上述函数定义在一个单独的头文件和相应的C++文件。当我尝试编译它们并创建一个目标文件时,我没有遇到任何问题。链接器阶段可以看到这些错误。
啊!是。这是问题所在。我没有明确实例化模板。我是新来的模板,并有很多东西可以学习。问题解决了!谢谢大卫! – Sriram 2010-06-21 09:01:40
你真的需要使用显式实例吗?在大多数情况下,最好是在头文件中提供模板的定义,并让编译器在使用时隐式地实例化它。 – 2010-06-21 17:20:20