大家好我的程序有问题。我是c ++的新手,我正在尝试编写泛型编程,但像往常一样,我的程序中有很多错误。 我正在努力,但我不明白我的错误在哪里。 我想要一个模板类,其中我描述了一个方法add(),它取一个和,c'tor和compute(),它们是sum的算术平均值。 nAdd是元素的数量。非常感谢你!
template<typename T>
class AccumulatorMean {
public:
AccumulatorMean() : sum(0), nAdd(0), media(0) {};
T add(const T& data);
T compute();
private:
int nAdd;
T sum;
T media;
};
template <typename T>
T& AccumulatorMean::add(const T& data) {
sum += data;
nAdd++;
return sum;
}
template <typename T>
T& AccumulatorMean::compute() {
media = sum/nAdd;
return media;
}
int main() {
AccumulatorMean a;
a.add<int>(5);
}
答案 0 :(得分:1)
这里有一些错误:
<强>首先
你的主要应该是这样的:
r''
您指定了类具有模板参数。所以你必须在实例化类时添加它。
第二名:
当您使用模板参数定义类的成员函数时,也必须添加它:
int main() {
AccumulatorMean<int> a;
a.add(5);
}
请参阅template <typename T>
T AccumulatorMean<T>::add(const T& data) {
...
}
第三名:
在您的代码中,当您声明函数返回AccumulatorMean<T>
时,函数的定义返回T&
。那也错了。我已经在我的代码中对此进行了更改。