template<typename Elem>
class linkeddeque {
private:
dlinkedlist<Elem> d;
int n;
public:
...
void sum_average();
};
template<typename Elem> void linkeddeque::sum_average() { //C2955
cout << "Error!" << endl;
}
template <> void linkeddeque<double>::sum_average() {
int ss = n;
double sum = 0;
double temp[50];
for (int i = 0; i < ss; i++) {
temp[i] = back();
sum = sum + back();
removeback();
}
for (int i = 0; i < ss; i++) {
insertfront(temp[i]);
}
double aver = sum / ss;
cout << "sum : " << sum << " average : " << aver << endl;
}
我想使用specialization来为int / double / float定制sum_average。 所以,我使用了特化功能但发生了错误。 希望有人能说出这段代码有什么问题。
答案 0 :(得分:0)
您定义类模板的成员函数的代码是错误的。变化
template<typename Elem> void linkeddeque::sum_average() {
到
template<typename Elem> void linkeddeque<Elem>::sum_average() {
~~~~~~
无论如何,错误似乎与专业化无关。
答案 1 :(得分:0)
未正确模板sum_average()
方法:
template<typename Elem> void linkeddeque<Elem>::sum_average() {
// ~~~~^^^^^^~~~
cout << "Error!" << endl;
}