c++ - 错误 C2100 - 非法间接

标签 c++ arrays templates compiler-errors

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

这是运算符定义:

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/

相关文章:

c# - 如何在 C# 中对齐 float 组?

c++ - 如何将 Eigen 求解器缓存为类成员?

c++ - C2676实现结构列表时发生编译错误

ios - swift2 将文本文件的内容加载到变量中

c++ - 类公共(public)函数引用私有(private)数组

python - 保留 numpy 数组每一行的 n 个最大值,并将其他所有值归零

c++ - 将数字转换为填充字符串

c++ - 这种模板函数重载的案例让我无法理解

c++ - 使用模板化仿函数segfaults调用printf(仅64位,在32位中使用valgrind clean)

c++ - 为什么 g++ 将计算拉入热循环?