1. ホーム
  2. c++

[解決済み] エラー C2100 - 不正な方向性

2022-02-09 20:21:19

質問

配列テンプレートクラスで*演算子を定義する非常に簡単なプログラムを書いています。 コンパイルしようとすると、エラー "不正なインダイレクト" が発生します。 この問題についてのヘルプがあれば、非常に感謝します。

これが演算子の定義です。

template <typename T>                                                                   
NumericArray<T> NumericArray<T>::operator * (const int factor) const
{
NumericArray<T>* TempArray2 = new NumericArray<T>(Size());
for (int i=0; i<Size(); i++)
{
    *TempArray2[i] = ((GetElement(i))*(factor));
}
return *TempArray2;
}

そして、これがテストのmain関数での実装です。

cout<<((*intArray1)*5).GetElement(0);                                   
cout<<((*intArray1)*5).GetElement(1);
cout<<((*intArray1)*5).GetElement(2);

何かアイデアはありますか?

解決方法は?

を忘れないでください。 演算子の優先順位 のルールがあります。欲しいようです。

(*TempArray2)[i]

そうでない場合は、式 *TempArray2[i] として扱われます。 *(TempArray2[i]) で、あなたの NumericArray<T> タイプには 単項 * 演算子がオーバーロードされました。