错误 c2955:使用 c++ 模板

ERROR c2955 : using c++ template

本文关键字:c++ 模板 使用 c2955 错误      更新时间:2023-10-16
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;
}

我想使用专业化来自定义 int/double/float 的sum_average。所以,我使用专业化来运作,但发生了错误。希望任何人都可以说出这段代码有什么问题。

定义类模板成员函数的代码是错误的。改变

template<typename Elem> void linkeddeque::sum_average() {

template<typename Elem> void linkeddeque<Elem>::sum_average() {
                                        ~~~~~~

无论如何,该错误似乎与专业化无关。

未正确模板化您的sum_average()方法:

template<typename Elem> void linkeddeque<Elem>::sum_average() {
//                                  ~~~~^^^^^^~~~
    cout << "Error!" << endl;
}