tv.h
#ifndef TV_h_ #define TV_h_ #include <iostream> using namespace std; class Remote; class Tv{ private: int state; int volume; int maxchannel; int channel; int mode; int input; public: friend class Remote; enum{Off,On}; enum {MinVal,MaxVal=20}; enum{Antenna,Cable}; enum {TV,DVD}; Tv(int s=Off,int mc=125):state(s),volume(5),maxchannel(mc),channel(2),mode(Cable),input(TV){}; void onoff(){ state=(state==On)?Off:On; }; bool ison(){ return state==On; }; bool volup(); bool voldown(); void chanup(); void chandown(); void set_mode(){ mode=(mode==Antenna)?Cable:Antenna; }; void set_input(){ input=(input==TV)?DVD:TV; //这是个什么情况??? }; void setting()const; void setR(Remote &r);//这里不能有方法的定义,否则会导致前置声明的混乱而无法编译 }; class Remote { friend class Tv; private: int mode; int RemoteMode;//用于描述遥控器的模式 enum{RemoteOn,RemoteOff}; public: Remote(int m=Tv::TV,int rm=RemoteOn):mode(m){};//构造函数多了一个 bool volup(Tv &t){return t.volup();}; bool vodown(Tv &t){ return t.voldown();}; void onoff(Tv &t){return t.onoff();}; void chanup(Tv &t){t.chanup();}; void chandown(Tv &t){t.chandown();}; void set_chan(Tv &t,int c){t.channel=c;}; void set_mode(Tv &t){t.set_mode();} void set_input(Tv &t){t.set_input();}; void show() { cout<<"RemoteMode:"<<(RemoteMode==RemoteOn?"RemoteOn":"RemoteOff")<<endl; } void change() { RemoteMode=RemoteOn?RemoteOff:RemoteOn;//用于Tv类切换 } }; #endif
tv.cpp
#include "tv.h" #include <iostream> using namespace std; //tv bool Tv::volup() { if(volume<MaxVal) { volume++; return true; } else return false; } bool Tv::voldown() { if(volume>MinVal) { volume--; return true; } else return false; } void Tv::chanup() { if(channel<maxchannel) channel++; else channel=1; } void Tv::chandown() { if(channel>1) channel--; else channel=maxchannel; } void Tv::setting()const { cout<<"Tv is "<<(state==Off?"off":"on")<<endl; if(state==On) { cout<<"Volume setting="<<volume<<endl; cout<<"Channel setting="<<channel<<endl; cout<<"Mode="<<(mode==Antenna?"antenna":"cable")<<endl; cout<<"Input="<<(input==TV?"Tv":"DVD")<<endl; } } void Tv::setR(Remote &r) { if(state==On) r.change(); else cout<<"Tv is not on!"<<endl; }
main151.cpp
#include "tv.h" #include <iostream> using namespace std; void main151() { /* Tv t; cout<<"Initial setting for t"<<endl; t.setting(); t.onoff(); t.chanup(); cout<<"\nAdjusted settings for t"<<endl; t.setting(); t.chanup(); cout<<"Adjusted setting for t"<<endl; t.setting(); */ Remote grey; /* grey.set_chan(t,10); grey.volup(t); grey.volup(t); cout<<"t \"settings after using remote:"<<endl; t.setting(); */ Tv t11(Tv::On); t11.setting(); grey.set_chan(t11,28); cout<<"t11 settings "<<endl; t11.setting(); grey.show(); t11.setR(grey); grey.show(); }
——————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:https://www.royalchen.com/
author:royalchen
Email:royalchen@royalchen.com
———————————————————————————————————————————————————