2016-09-07 8 views
0

こんにちは私のプログラムに問題があります。私はC++で新しく、一般的なプログラミングをコーディングしようとしていますが、いつものように私のプログラムから多くのエラーがあります。 私は自分の最善を尽くしていますが、どこにエラーがあるのか​​分かりません。 テンプレートクラスが必要です。ここでは、加算を行うadd()メソッドと、合計の算術平均を行うc'torとcompute()メソッドを記述します。 nAddは要素の数です。どうもありがとうございました!C++:テンプレートクラスの実行時エラー

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

ちょうどあなたのための情報:コンパイル時にエラーが発生した場合、それは 'コンパイル時エラー'です。あなたが実際にあなたのプログラムを走らせてそこにエラーがあるとき、それは 'ランタイムエラー'です – Hayt

答えて

1

ここでいくつかのエラーがあります

最初に:

あなたのメインは、次のようになります。

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

あなたはテンプレートパラメータを持つクラスを指定。クラスをインスタンス化するときに追加する必要があります。

第二:

テンプレートのPARAMを持つクラスのメンバ関数を定義すると、これはあまりにも追加する必要があります。

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

AccumulatorMean<T>

そして、第三を参照してください。

あなたのコードでは、関数のイオンはTを返すと宣言したときにT&を返しました。それも間違っていた。私は既にこれを私のコードで変更しました。

+0

あなたは私に保存しますありがとう – Rjack