為什么會報錯顯示Match不是類或命名空間名稱
class Time
{
?friend void Match::printTime(Time &t);
public:
?Time(int hour, int min, int sec)
?{
??m_iHour = hour;
??m_iMinute = min;
??m_iSecond = sec;
?}
private:
?int m_iHour;
?int m_iMinute;
?int m_iSecond;
};
class Match
{
public:
?void printTime(Time &t)
?{
??cout << t.m_iHour << "-" << t.m_iMinute << "-" << t.m_iSecond << endl;
?}
};
int main()
{
?Time t(6, 36, 25);
?Match m;
?m.printTime(t);
?system("pause");
?return 0;
}
2018-09-11
#include <iostream>
using namespace std;
class Match;
class Time
{
?? ?friend? Match;
public:
?? ?Time(int hour, int min, int sec)
?? ?{
?? ??? ?m_iHour = hour;
?? ??? ?m_iMinute = min;
?? ??? ?m_iSecond = sec;
?? ?}
private:
?? ?int m_iHour;
?? ?int m_iMinute;
?? ?int m_iSecond;
};
class Match
{
public:
?? ?void printTime(Time &t)
?? ?{
?? ??? ?cout << t.m_iHour << "-" << t.m_iMinute << "-" << t.m_iSecond << endl;
?? ?}
};
int main()
{
?? ?Time t(6, 36, 25);
?? ?Match m;
?? ?m.printTime(t);
?? ?system("pause");
?? ?return 0;
}??? 這個是友元類的實現方式只有在友元情況下 t.m_iMinute才是對的
2018-09-11
#include <iostream>
using namespace std;
class Time
{
public:
?? ?friend void printTime(Time &t);
?? ?Time(int hour, int min, int sec)
?? ?{
?? ??? ?m_iHour = hour;
?? ??? ?m_iMinute = min;
?? ??? ?m_iSecond = sec;
?? ?}
private:
?? ?int m_iHour;
?? ?int m_iMinute;
?? ?int m_iSecond;
};
?? ?void printTime(Time &t)
?? ?{
?? ??? ?cout << t.m_iHour << "-" << t.m_iMinute << "-" << t.m_iSecond << endl;
?? ?}
?int main()
{
?? ?Time t(6, 36, 25);
?? ?
????? printTime(t);
?? ?system("pause");
?? ?return 0;
}
2018-09-11
那也是一樣的?? 你最需要注意的是t.m_iHour這種寫法是不對的? 因為你的數據是私有的? 實例化的對象是不能直接訪問的
2018-09-10
#include <iostream>
using namespace std;
class Match;
class Time
{
?? ?friend Match;
public:
?? ?Time(int hour, int min, int sec)
?? ?{
?? ??? ?m_iHour = hour;
?? ??? ?m_iMinute = min;
?? ??? ?m_iSecond = sec;
?? ?}
?? ?void printTime()
?? ?{
?? ??? ?cout << m_iHour << "-" << m_iMinute << "-" << m_iSecond << endl;
?? ?}
private:
?? ?int m_iHour;
?? ?int m_iMinute;
?? ?int m_iSecond;
};
class Match
{
public:
?? ?/*void printTime(Time &t)
?? ?{
?? ??? ?cout << t.m_iHour << "-" << t.m_iMinute << "-" << t.m_iSecond << endl;
?? ?}*/
};
int main()
{
?? ?Time t(6, 36, 25);
?? ?/*Match m;
?? ?m.printTime(t);*/
?? ?t.printTime();
?? ?system("pause");
?? ?return 0;
}
改成這樣或者也有其他改法,
2018-09-10
你這個有好幾處問題
聲明match類的友元函數時,應該先在類外聲明Match;
m_iHour是私有成員,你定義的time 對象也無法訪問