错误 C2228:".values"的左侧必须具有类/结构/联合
error C2228: left of '.values' must have class/struct/union
我试图在C++上学习一些运算符重载方法,然后我遇到了这个错误:
错误7 错误 C2228:".values"的左侧必须具有类/结构/联合
还有另一个错误说:
错误4 错误 C2065:"sum":未声明的标识符
Matrix<type> Matrix<type>::operator+(const Matrix& m){
if(num_of_rows != m.num_of_rows || num_of_cols != m.num_of_cols) // Checking if they don't have the same size.
Matrix<type> *sum;
sum = new Matrix<type>(num_of_rows, num_of_cols);
for(int i = 0; i < num_of_rows; i++)
for(int j = 0; j < num_of_cols; j++)
sum.values[i][j] = values[i][j] + m.values[i][j];
return *sum;
}
有人能告诉我我哪里做错了?
在您发布的代码中,sum
是一个指针。因此,要访问对象的成员,您需要使用 ->
:
sum->values[i][j] = ...
您似乎在声明Matrix<type> *sum;
后也缺少一个分号,但目前尚不清楚这是转录错误还是您的代码是否真的看起来像那样。
最后,您的内存管理泄漏了一个对象。您使用 new
分配对象,但返回该对象的副本,并且永远不会释放它。也许你想要这样的东西:
Matrix<type> sum(num_of_rows, num_of_cols);
for ( ... )
sum.values[i][j] = ..
return sum;
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 如何将结构/联合数组的成员传递到函数中
- error dllimport 函数的定义不允许在一个特定的联合中,而其他类、结构和联合将按预期导出
- 为什么继承的结构成员在联合中无法访问?
- 在向量 C++14(无限制联合)的结构内的联合中创建和存储字符串
- 尝试初始化结构内的联合时出错
- 嵌套在联合中的结构嵌套在 C 中的结构中
- 成员引用基类型 'char' 不是 C++ 中的结构或联合
- 结构内部结构的联合 - 混合 C 和 C++
- 联合初始化中的结构
- 成员引用基类型不是结构或联合
- 在结构中使用联合的目的是什么?
- 错误 C2228 左侧'.setDay'必须具有类/结构/联合
- 如何从平面缓冲区中反序列化联合结构的 void* 值的大小
- 联合结构 C# - 等效或等于
- 将C++联合结构转换为 VB6
- C ++:联合 -> 结构,解释?
- 编译器特定联合结构实现的标准替代方案
- 具有构造函数的类的匿名联合/结构
- 联合结构有什么作用