C++ 友元类的用法

今天 准备写一个 DX渲染类  用到了前面写的 CreaDecive中的private变量    想了想就添加了一个友元函数

这一天即可不要紧 错误接连不断 最后终于调通了

 

其中在网上找的一个例子帮了哦我不少大忙   代码如下

#pragma  once
#include "time.h"


class Date{
public:
 Date(int y=2007,int m=12,int d=25)
 {m_iYear=y;m_iMonth=m,m_iDay=d;
 }
 friend void Time::display(Date &d);

private:
 int m_iYear;
 int m_iMonth;
 int m_iDay;
};

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

 

data。cpp

#include "data.h"

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

time。h

 

#pragma  once
#include <iostream>
using namespace std;
class Date;//先声明Date类,后面会有定义,否则在Time中的void display(Date &);会报错,因为编译器还认不得Date类
class Time{
public:
 Time(int h=20,int m=25,int s=30):m_iHour(h),m_iMinute(m),m_iSecond(s){}
 void Show()
 {cout<< m_iHour<<":"<< m_iMinute<<":"<<m_iSecond<<endl;}
 void display(Date &);//不能在此定义,因为声明的Date类,不能去访问其成员变量,必须要在Date定义后
private:
 int m_iHour;
 int m_iMinute;
 int m_iSecond;
};

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

time。cpp

 

#include "time.h"
#include "data.h"
#include <iostream>
using namespace std;
void Time::display(Date &d)
{cout<<d.m_iYear<<"/"<<d.m_iMonth<<"/"<<d.m_iDay<<endl;
cout<<m_iHour<<":"<< m_iMinute<<":"<<m_iSecond<<endl;
}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

main.cpp

 

#include "data.h"
#include "time.h"

void main()
{
 Time time1(5,6);
 //time1.Show();

 Date date1;
 time1.display(date1);


}

 

 

最后发现其实自己不是在友元这一块弄错了 而是在include 头文件时 顺序搞错 结果 总是产生错误

 

不过也加什么对友元的认识

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值