在做稀疏矩阵相加的题
其中有一个对两个矩阵行和列是否相等的判断。
我使用了友元函数,到那时报错是:
成员 "TripleMatrix::mu" (已声明 所在行数:23) 不可访问 ??
我的代码如下:
//在类里面声明函数
friend bool matrixAdd(TripleMatrix a, TripleMatrix b, TripleMatrix& result); //加法
//定义函数
bool matrixAdd(TripleMatrix a, TripleMatrix b, TripleMatrix* result) {
if (a.mu != b.mu || a.nu != b.nu) return false;
}
在 TripleMatrix 类中定义友元 friend bool matrixAdd(TripleMatrix a, TripleMatrix b, TripleMatrix& result);
代码示例
#include <iostream>
using namespace std;
class A
{
friend void CallFunc(class A);//定义友元
public:
void Func1()
{
cout << "Func1" << endl;
}
protected:
void Func2()
{
cout << "Func2" << endl;
}
private:
void Func3()
{
cout << "Func3" << endl;
}
};
void CallFunc(A a)//友元函数
{
//调用没有问题
a.Func1();
a.Func2();
a.Func3();
}
int main(void)
{
A a;
CallFunc(a);
return 0;
}