“friend声明友元函数,友元函数却依旧无法访问该类的私有属性”的解决方法
来源:互联网 发布:windows 10下崩溃绿屏 编辑:程序博客网 时间:2024/05/16 09:55
背景:这次是一次C++作业题,很诡异,搞了很久弄明白了,虽然成功了,但VS2015依旧有红线提示错误,不过不影响编译、运行。
解决:
友元类方法总结:1、包含声明”friend”的类,必须在((包含其声明的友元函数)的那个类)之前事先声明下————因为在Employer类中用到”Employee&”,不然无法访问该引用的私有成员。
2、被声明为友元的函数,必须在类内声明,然后在将其声明为友元函数的类的后面定义。
3、还有一个我个人犯的弱智错误——在声明友元函数时,忘记加该函数的作用域了。。。。
作业代码如下:#include < iostream >
include < string >
using namespace std;
class Employee;
class Employer
{
public:
Employer(string a) {
Name = a;
};
void editEmployee(Employee & person, double salary, string post);
private:
string Name;
};
class Employee {
public:Employee(int a, string b, double c, string d) {
ID = a;
Name = b;
Salary = c;
Post = d;
}
friend void Employer::editEmployee(Employee & person, double salary, string post);
void printInf() {
cout << “ID:” << ID << “\t” << “Name:” << Name << “\t” << “Salary:” << Salary << “\t” << “Post:” << Post << endl;
}
protected:
private:
int ID;
string Name;
double Salary;
string Post;
};
void Employer::editEmployee(Employee & person, double salary, string post) {
person.Salary = salary;
person.Post = post;
};
int main()
{
Employee sb(22, “abc”, 1.23, “a”);
cout << “Previous Information :” << endl;
sb.printInf();
Employer boss(“BidBoss”);
cout << “Updated Information :” << endl;
boss.editEmployee(sb, 12.3, “b”);
sb.printInf();
return 0;
}
//希望能帮到大家,省下一些时间.
- “friend声明友元函数,友元函数却依旧无法访问该类的私有属性”的解决方法
- 友元函数 无法访问 类私有成员
- 友元函数 无法访问 类私有成员
- C++类的友元函数friend
- C++友元函数神奇的friend
- friend 友元函数
- 友元函数(friend)
- 友元函数 friend
- 友元函数friend
- Friend 非成员函数声明为友元 【C++ friend】
- C++:友元函数friend
- 模板函数的友元声明
- 模板友元函数的声明
- 特殊的友元函数声明
- 友元函数的声明与定义
- friend void fun(); 类的友元函数
- 【友元】friend的用法
- C++ 友元函数(Friend)
- 解释为什么基于“推”的Gossip传播⽐基于“拉”的 Gossip传播要慢?
- http状态码--详解
- markdown学习
- c++用指针遍历一维数组和二维数组
- Linux笔记
- “friend声明友元函数,友元函数却依旧无法访问该类的私有属性”的解决方法
- Caffe-CIFAR10实验
- 美团城市选择源码解析
- js之迭代器模式
- 服务器安全配置之一:用户管理
- {{}}、ng-bind和ng-model的区别
- 面向对象解析(一)
- Mac 下 nginx 的相关操作
- 系统中的yum服务