为了账号安全,请及时绑定邮箱和手机立即绑定

这个程序和老师讲的一样,我只不过写在一块了为啥不能访问private?是编译器的问题吗?我用的vs2013

#include<iostream>

#include<stdlib.h>

using namespace std;

class Time

{

friend void Match::printTime(Time &t);

public:

Time(int hour, int min, int sec);

private:

int m_iHour;

int m_iMinute;

int m_iSecond;

};

Time::Time(int hour, int min, int sec)

{

m_iHour = hour;

m_iMinute = min;

m_iSecond = sec;

}

class Time;

class Match

{

public:

void printTime(Time&t);

};

void Match::printTime(Time&t)

{

cout << t.m_iHour << ":" << t.m_iMinute << ":" << t.m_iSecond << endl;

}


int main(void)

{

Time t(4, 45, 56);

Match m;

m.printTime(t);

system("pause");

return 0;

}


正在回答

2 回答

# include <iostream>
# include <stdlib.h>
# include <string>
# include "Math.h"
using namespace std;

class Math;
class Time
{
//	friend void test(Time &t);//友元全局函数
	friend void Math::a(Time &s); //友元成员函数
public:
	Time(int h, int m, int s);
private:
	int m_iHour;
	int m_iMinute;
	int m_iSecond;
};
#ifndef MATH_H
#define MATH_H

# include "Friend.h"
class Time;
class Math
{
public:
	void a(Time &t)
	{
//		cout <<t.m_iHour<< ":" << t.m_iMinute << ":" << t.m_iSecond <<  endl;//error,友元成员函数访问有问题
	}
};
#endif

也是不行,同VS2013

0 回复 有任何疑惑可以回复我~

这个跟编译器没有关系,我在自己的环境下,也不能实现,具体不清楚怎么回事,最好把程序分开写

0 回复 有任何疑惑可以回复我~
#1

慕桂英2929322 提问者

分开写也出不来
2016-11-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

这个程序和老师讲的一样,我只不过写在一块了为啥不能访问private?是编译器的问题吗?我用的vs2013

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信