我编写了一个非常简单的程序,用于在数组模板类中定义*运算符。
当我尝试编译时,它给我一个错误“非法间接”。
任何对此事的帮助将不胜感激!

这是运算符的定义:

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;
}

这是测试主要功能中的实现:
cout<<((*intArray1)*5).GetElement(0);
cout<<((*intArray1)*5).GetElement(1);
cout<<((*intArray1)*5).GetElement(2);

有任何想法吗?

最佳答案

不要忘记您的operator precedence规则。看来您想要:

(*TempArray2)[i]

否则,您的表达式*TempArray2[i]将被视为*(TempArray2[i]),我想您的NumericArray<T>类型不会重载一元*运算符。

09-07 07:12