我正在使用这个模板化类的函数处理各种相关问题。
对于标题我有:
template<typename T>
class Stats {
public:
Stats();
std::vector<T> polyfit( const std::vector<T>&, const std::vector<T>&, int );
std::vector<T> polyval( const std::vector<T>& oCoeff, const std::vector<T>& );
QList<int> linearRegression(int, int, int);
static QList<int> DFT(QList<int>,QList<int>);
};
然后对于函数定义,我有:
template<typename T>
QList<int> Stats<T>::DFT(QList<int> samples,QList<int> freqs){
...
...
}
然后,这是问题发生的地方,在另一个班级,我有这个:
Stats<int> stats();
QList<int> DFTs = stats.DFT(chunks.at(i),freqs);
问题发生在stats.DFT()
行,目前是
request for member 'DFT' in 'stats', which is of non-class type 'Stats<int>()'
QList<int> DFTs = stats.DFT(chunks.at(i),freqs);
^
将Stats<int> stats()
更改为Stats<int> stats
会导致以下错误:
undefined reference to `Stats<int>::Stats()'
构造函数定义是:
template<class T>
Stats<T>::Stats(){
}
建议的答案不使用模板,应用于此模板类实例化的解决方案会导致新的错误。