鱼C论坛

 找回密码
 立即注册
查看: 2777|回复: 1

[已解决]C++的友元素问题

[复制链接]
发表于 2021-5-20 17:42:49 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 M_bells 于 2021-5-20 17:45 编辑

封闭类的成员函数试图直接访问内部类的私有成员,结果不成功
不能访问Date类的三个私有成员:year、month、day
  1. #include <iostream>
  2. using namespace std;
  3. class Date;
  4. class Date      //日期类
  5. {
  6. private:
  7.         int year;
  8.         int month;
  9.         int day;
  10. public:
  11.         Date(int y, int m, int d)
  12.         {
  13.                 year = y;
  14.                 month = m;
  15.                 day = d;
  16.         }
  17.         void set_date(int y, int m, int d)
  18.         {
  19.                 year = y;
  20.                 month = m;
  21.                 day = d;
  22.         }
  23.         void print()
  24.         {
  25.                 cout << year << "年" << month << "月" << day << "日" << endl;
  26.         }
  27. };


  28. class Person     //个人类
  29. {
  30. private:
  31.         long ID;                                                       //编号
  32.         Date birthday;                                                //出生日期
  33. public:
  34.         Person(long id, int by, int bm, int bd) :birthday(by, bm, bd)
  35.         {
  36.                 ID = id;
  37.         }
  38.         void display()
  39.         {
  40.                 cout << "编号: " << ID << endl;
  41.                 cout << "出生日期: ";
  42.                 birthday.print();
  43.         }
  44.         void set_birthday(int y, int m, int d)//希望直接修改出生日期的数据
  45.         {
  46.                 birthday.year = y;                                                                     //这里错误!!
  47.                 birthday.month = m;
  48.                 birthday.day = d;
  49.         }
  50. };

  51. int main()
  52. {
  53.         Person p1(123456L, 1980, 12, 3);
  54.         p1.display();
  55.         p1.set_birthday(1990, 12, 3);
  56.         return 0;
  57. }
复制代码

请问一下怎么修改能访问Date的数据
最佳答案
2021-5-20 17:42:50
需要在Date里声明友元类friend  class  Person;这样Person类才能访问Date类的私有变量

最佳答案

查看完整内容

需要在Date里声明友元类friend class Person;这样Person类才能访问Date类的私有变量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-20 17:42:50 | 显示全部楼层    本楼为最佳答案   
需要在Date里声明友元类friend  class  Person;这样Person类才能访问Date类的私有变量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-21 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表