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
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<<":"< void display(Date &);//不能在此定义,因为声明的Date类,不能去访问其成员变量,必须要在Date定义后
private:
 int m_iHour;
 int m_iMinute;
 int m_iSecond;
};

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

time。cpp

 

#include "time.h"
#include "data.h"
#include
using namespace std;
void Time::display(Date &d)
{cout<cout<}

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

main.cpp

 

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

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

 Date date1;
 time1.display(date1);


}

 

 

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

 

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

 

 

 

 

 

 

 

你可能感兴趣的:(C++ 友元类的用法)