
C++,关于友元函数的题,如何用一个类的成员函数去作为其他函数的友元函数去控制更改其他函数的私有属性
定义一个学生类Student,其中有成绩数据成员;第一个教师类Teacher,其中有设置学生成绩的成员函数,该成员函数作为Student的友元函数。为什么可以用一个类的成...
定义一个学生类Student,其中有成绩数据成员;第一个教师类Teacher,其中有设置学生成绩的成员函数,该成员函数作为Student的友元函数。为什么可以用一个类的成员函数去作为其他函数的友元函数去控制更改其他函数的私有属性啊。我用成员对象去点取得时候无法在Teacher类里做到啊。这个程序应该怎么写?
展开
2个回答
展开全部
是不是这样就行了:
class StudentT;//为了函数中的参数 ,需前置声明--①
class Teacher//--②
{
public:
void ChangeChji(StudentT & studentObj, double chji);
};
class StudentT//因为用的是Teacher的成员函数作为友元函数,StudentT必须能看到 Teacher类的定义 --③
{
friend void Teacher::ChangeChji(StudentT & studentObj, double chji);
private:
double chji;
};
void Teacher::ChangeChji(StudentT & studentObj, double chji)//因为函数定义里用到了StudentT的数据,所以必须能看到StudentT类的定义。--④
//当然,作为Teacher的方法,它也是必须能看到 Teacher类的定义才行
{
studentObj.chji = chji;
}
int main()
{
StudentT stuObj;
Teacher teObj;
teObj.ChangeChji(stuObj, 99.9);//其他构造函数、输出等函数,可以酌情扩充
return 0;
}
其实关键的就是那几个位置的摆放,(标号的①~④),这是写在一个cpp里,你用头文件,也是类似的。调试结果截图如下:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询