我编写了一个非常简单的程序,用于在数组模板类中定义 * 运算符。 当我尝试编译时,它给了我一个错误“非法间接”。 任何有关此事的帮助将不胜感激!
这是运算符定义:
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>
类型没有 一元 *
运算符重载。
关于c++ - 错误 C2100 - 非法间接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147219/