C ++:模板类的运行时错误

时间:2016-09-07 14:06:50

标签: function class templates c++11

大家好我的程序有问题。我是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);
}

1 个答案:

答案 0 :(得分:1)

这里有一些错误:

<强>首先

你的主要应该是这样的:

r''

您指定了类具有模板参数。所以你必须在实例化类时添加它。

第二名:

当您使用模板参数定义类的成员函数时,也必须添加它:

int main() {
    AccumulatorMean<int> a;
    a.add(5);
}

请参阅template <typename T> T AccumulatorMean<T>::add(const T& data) { ... }

第三名:

在您的代码中,当您声明函数返回AccumulatorMean<T>时,函数的定义返回T&。那也错了。我已经在我的代码中对此进行了更改。