这个问题困扰我好几天了:
两个矩阵相乘,在运算符函数中,为什么矩阵类对象不能返回,
奇怪的是:当A ,B是同型矩阵时,不会出现问题,比如两个都是2×2时
当A ,B不是同型矩阵时,C就不能返回了,比如A是2×2,B是2×3。
下面是其中的相关代码:
GaloisFieldMatrix operator* (const GaloisFieldMatrix & A , const GaloisFieldMatrix & B)
{
//数据检查
GaloisFieldMatrix C(A.gf , A.GetRow() , B.GetCol());
for(int i = 0 ; i < C.GetRow() ; i++)
for(int j = 0 ; j < C.GetCol() ;j++)
for(int k = 0 ; k < A.GetCol() ; k++)
*(*(C.p+i)+j) += (*(*(A.p+i)+k)) * (*(*(B.p+k)+j));
//test
std::cout<<C; //到这里都没问题,C可以输出。
return C; //这里出了问题????为什么返不回去?
}
在 return C 处设置断点,调试时系统给出信息:Unhandled exception in cc.9.exe:0xC0000005:Access Violation
(这只有在A B是非同型矩阵时才出现)
还有一个问题:
在一些类的成员函数中,如果类对象的引用作为其参数,这些类对象为什么可以直接访问该类的私有成员?例如:
GaloisFieldPolynomial::GaloisFieldPolynomial(const GaloisFieldPolynomial& polynomial)
{
gf = polynomial.gf;
poly = polynomial.poly;
}
其中gf 和poly是GaloisFieldPolynomial类的私有成员。
谢谢帮忙解答一下,多谢!!