鱼C论坛

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

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

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

封闭类的成员函数试图直接访问内部类的私有成员,结果不成功
不能访问Date类的三个私有成员:year、month、day
#include <iostream>
using namespace std;
class Date;
class Date      //日期类 
{
private:
        int year;
        int month;
        int day;
public:
        Date(int y, int m, int d)
        {
                year = y;
                month = m;
                day = d;
        }
        void set_date(int y, int m, int d)
        {
                year = y;
                month = m;
                day = d;
        }
        void print()
        {
                cout << year << "年" << month << "月" << day << "日" << endl;
        }
};


class Person     //个人类
{
private:
        long ID;                                                       //编号
        Date birthday;                                                //出生日期
public:
        Person(long id, int by, int bm, int bd) :birthday(by, bm, bd)
        {
                ID = id;
        }
        void display()
        {
                cout << "编号: " << ID << endl;
                cout << "出生日期: ";
                birthday.print();
        }
        void set_birthday(int y, int m, int d)//希望直接修改出生日期的数据
        {
                birthday.year = y;                                                                     //这里错误!!
                birthday.month = m;
                birthday.day = d;
        }
};

int main()
{
        Person p1(123456L, 1980, 12, 3);
        p1.display();
        p1.set_birthday(1990, 12, 3);
        return 0;
}
请问一下怎么修改能访问Date的数据
最佳答案
2021-5-20 17:42:50
需要在Date里声明友元类friend  class  Person;这样Person类才能访问Date类的私有变量

最佳答案

查看完整内容

需要在Date里声明友元类friend class Person;这样Person类才能访问Date类的私有变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 11:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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