教育目的で、私は独自のC ++数値ベクトルテンプレートクラスを作成しています。2つのベクトルの内積に対して(v、w)を記述できるようにしたいのでoperator,()
、次のようにオーバーロードします。
template<class T>
const T Vector<T>::operator,(const Vector<T>& v) const
{
assertEqualSize(v);
T t;
for(size_t i=0; i<numElements; i++) {
t += elements[i] * v[i];
}
return t;
}
私の質問は以下のようになります。どのように私は正しく初期化しますt
(例:賢明な値で0.0
用Vector<double>
)?試しましたT t();
が、g ++から、たとえば、「double(*)()」はreturnステートメントで「constdouble」に変換できずoperator+=()
、「(double()、double)」には定義されないことがわかります。
どうもありがとうございました!
必要なのは値の初期化と呼ばれ、組み込み型をゼロで初期化する効果があります。
T t{}; // C++11
T t = T(); // C++03 and C++11
これが機能しない理由
T t();
これは、と呼ばれるパラメータのない関数の宣言でありt
、を返しますT
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加