亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

vs 2013 友元函數不可訪問私有函數 但編譯可通過 求解釋

https://img1.sycdn.imooc.com//5cc40e7200018f7c15930774.jpg

不可訪問 為什么還能編譯通過?

正在回答

6 回答

在Match.h中不能包含Time.h,只能用class Time預聲明有這個類,我就是去掉time的頭文件,和老師一樣就行了

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

我遇到過這個問題,就是因為你的time.h中沒有加 using namespace std; 導致的, 但我不知道為什么?

0 回復 有任何疑惑可以回復我~
你的并沒有編譯通過
很可能時你聲明友元函數時名字與Match里不一致

Demo.cpp

#include<iostream>
#include<stdlib.h>
#include"Time.h"
#include?"Match.h"
using?namespace?std;
//void?printTime(Time?&t);
int?main(void)
{
Time?t(6,34,25);
????Match?m;
m.PrintTime(t);
????system("pause");
????return?0;
}
//void?printTime(Time?&t)
//{
//????cout<<t.m_iHour<<":"<<t.m_iMinute<<":"<<t.m_iSecond<<endl;
//}

Match.h

#ifndef?STUDENT_H
#define?STUDENT_H
class?Time;
class?Match
{
public:
????void?PrintTime(Time?&t);
};
#endif

Match.cpp

#include"Match.h"
#include"Time.h"
#include<iostream>
using?namespace?std;
void?Match::PrintTime(Time?&t)
{
cout<<t.m_iHour<<":"<<t.m_iMinute<<":"<<t.m_iSecond<<endl;
}

Time.h

#ifndef?TIME_H
#define?TIME_H
#include?"Match.h"
#include<iostream>
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;
};
#endif

Time.cpp

#include?"Time.h"
Time::Time(int?hour,int?min,int?sec)
{
????m_iHour=hour;
????m_iMinute=min;
????m_iSecond=sec;
}


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

執行不變錯。是為什么呢?

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

+1一樣

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

編譯沒有通過???你應該是其他地方有問題

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

舉報

0/150
提交
取消
C++遠征之模板篇
  • 參與學習       91140    人
  • 解答問題       325    個

本C++教程力求即學即會,所有知識以實踐方式講解到操作層面

進入課程

vs 2013 友元函數不可訪問私有函數 但編譯可通過 求解釋

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號