CPP-file:
Matrix2x2& operator +=(const Matrix2x2 & rhs)
{
for (int i = 0; i < 2; i++)
{
for (int n = 0; n < 2; n++)
{
this->anArray.[i][n] += rhs.anArray[i][n];
}
}
return *this;
}
头文件:
class Matrix2x2
{
private:
double anArray[2][2];
public:
Matrix2x2();
Matrix2x2(int a, int b, int c, int d);
void setArrayValues(int row, int column, double value);
const double getArrayValues(int row, int column) const;
Matrix2x2& operator +=(const Matrix2x2 & rhs)
};
主档案:
Matrix2x2 aMatrix(4,4,4,4);
Matrix2x2 bMatrix;
aMatrix += bMatrix;
当我尝试运行时,我明白了:
错误:'Matrix2x2&amp; operator + =(const Matrix2x2&amp;)'必须带两个参数
我看不出原因?
我用
替换了它Matrix2x2& Matrix2x2::operator+=(const Matrix2x2 & rhs);
然后我收到了这些错误:
error: extra qualification 'Matrix2x2::' on member 'operator+='
头文件中的和
error: expected unqualified-id before '[' token|
在这一行:
this->anArray.[i][n] += rhs.anArray[i][n];
UPDATE2
我在头文件中展示了我的类声明,主文件中的调用和cpp文件中的函数定义。还有什么可以表现出来的?我目前已经纠正了你指出的所有内容,但我仍然遇到了同样的错误之一:
error: extra qualification 'Matrix2x2::' on member 'operator+=
在cpp和头文件中。
答案 0 :(得分:2)
好的,很多问题。
首先,在您的标头文件中,此行必须在Matrix2x2
的类声明中(最好在public:
标签下)
Matrix2x2& operator +=(const Matrix2x2 & rhs);
其次,您需要将您的定义放在CPP文件中,它需要看起来像这样:
Matrix2x2& Matrix2x2::operator+=(const Matrix2x2 & rhs)
{
for (int i = 0; i < 2; i++)
{
for (int n = 0; n < 2; n++)
{
this->anArray[i][n] += rhs.anArray[i][n];
}
}
return *this;
}
第三,你的for循环中有一个额外的“.
”。改变它:
this->anArray.[i][n] += rhs.anArray[i][n];
为:
this->anArray[i][n] += rhs.anArray[i][n];
我无法保证没有更多问题。但那些是我根据你向我们展示的东西而看到的。