c++各位帮帮忙啊

Laozql 2008-11-23 12:52:22
大家看下为什么下面总是有错误啊!

#include<iostream>
using namespace std;
class Dialposition;
class Wiperspeed{
private:
int wiperspeed;
public:
Wiperspeed(int speed=0)
{
wiperspeed=speed;
}
void changewiperspeed(int A,int B)
{
if(A==0)
wiperspeed=0;
else if(A==1)
{
if(B==0)
wiperspeed=4;
else if(B==1)
wiperspeed=6;
else
wiperspeed=12;
}
else if(A==2)
wiperspeed=30;
else
wiperspeed=60;
}
void sensechange(int A,int B)
{
changewiperspeed(A,B);
}
int getwiperspeed()
{
return wiperspeed;
}
};
class Leverposition{
private:
int leverposition;
public:
Leverposition(int lever=0)
{
leverposition=lever;
}
void Senseleverup(Dialposition A,Wiperspeed B)
{
if(leverposition==3)
cout<<"You have been on top Lever!"<<endl;
else
{
leverposition++;
B.sensechange(leverposition,A.getdialposition());
}
}
void Senseleverdown(Dialposition A,Wiperspeed B)
{
if(leverposition==0)
cout<<"You have been on the lowest Lever!"<<endl;
else
{
leverposition--;
B.sensechange(leverposition,A.getdialposition());
}

}
int getleverposition()
{
return leverposition;
}
};
class Dialposition{
private:
int dialposition;
public:
Dialposition(int dial=0)
{
dialposition=dial;
}
void Sensedialup(Leverposition &A,Wiperspeed &B)
{
if(dialposition==2)
cout<<"You have been the top Dial!"<<endl;
else
{
dialposition++;
B.sensechange(A.getleverposition(),dialposition);
}
}
void Sensedialdown(Leverposition &A,Wiperspeed &B)
{
if(dialposition==0)
cout<<"You have been on the lowest Dial!"<<endl;
else
{
dialposition--;
B.sensechange(A.getleverposition(),dialposition);
}
}
int getdialposition()
{
return dialposition;
}
};
void show(Wiperspeed &A,Dialposition &B,Leverposition &C)
{
cout<<"Lever position is:"<<C.getleverposition()<<endl;
cout<<"Dial position is:"<<B.getdialposition()<<endl;
cout<<"Wiper speed is:"<<A.getwiperspeed()<<endl;
}
void menu()
{
cout<<"\t\t.......1:Leverup........."<<endl;
cout<<"\t\t.......2:Leverdown......."<<endl;
cout<<"\t\t.......3:Dialup.........."<<endl;
cout<<"\t\t.......4:Dialdown........"<<endl;
cout<<"\t\t.......0:quit............"<<endl;
}
int main()
{
Dialposition B;
Leverposition C;
Wiperspeed A;
show(A,B,C);
int n;
do{
cout<<"Please input the operation:"<<endl;
menu();
cin>>n;
switch(n)
{
case 1:C.Senseleverup(B,A);break;
case 2:C.Senseleverdown(B,A);break;
case 3:B.Sensedialup(C,A);break;
case 4:B.Sensedialdown(C,A);break;
}
show(A,B,C);
}while(n!=0);
return 0;
}
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Laozql 2008-11-23
  • 打赏
  • 举报
回复
谢谢啊!
Laozql 2008-11-23
  • 打赏
  • 举报
回复
up
tocreat 2008-11-23
  • 打赏
  • 举报
回复
#include <iostream> 
using namespace std;

class Wiperspeed;
class Dialposition;
//////////////////////类及其函数声明
class Leverposition{
private:
int leverposition;
public:
Leverposition(int lever=0)
{
leverposition=lever;
}
void Senseleverup(Dialposition A,Wiperspeed B);
void Senseleverdown(Dialposition A,Wiperspeed B);
int getleverposition();
};

/////////////////////
class Wiperspeed{
private:
int wiperspeed;
public:
Wiperspeed(int speed=0)
{
wiperspeed=speed;
}
void changewiperspeed(int A,int B)
{
if(A==0)
wiperspeed=0;
else if(A==1)
{
if(B==0)
wiperspeed=4;
else if(B==1)
wiperspeed=6;
else
wiperspeed=12;
}
else if(A==2)
wiperspeed=30;
else
wiperspeed=60;
}
void sensechange(int A,int B)
{
changewiperspeed(A,B);
}
int getwiperspeed()
{
return wiperspeed;
}
};

////////////////////////////////
class Dialposition{
private:
int dialposition;
public:
Dialposition(int dial=0)
{
dialposition=dial;
}
void Sensedialup(Leverposition &A,Wiperspeed &B)
{
if(dialposition==2)
cout<<"You have been the top Dial!"<<endl;
else
{
dialposition++;
B.sensechange(A.getleverposition(),dialposition);
}
}
void Sensedialdown(Leverposition &A,Wiperspeed &B)
{
if(dialposition==0)
cout<<"You have been on the lowest Dial!"<<endl;
else
{
dialposition--;
B.sensechange(A.getleverposition(),dialposition);
}
}
int getdialposition()
{
return dialposition;
}
};
/////////////////////////////////
//Leverposition类定义

void Leverposition::Senseleverup(Dialposition A,Wiperspeed B)
{
if(leverposition==3)
cout<<"You have been on top Lever!"<<endl;
else
{
leverposition++;
B.sensechange(leverposition,A.getdialposition());
}
}
void Leverposition::Senseleverdown(Dialposition A,Wiperspeed B)
{
if(leverposition==0)
cout<<"You have been on the lowest Lever!"<<endl;
else
{
leverposition--;
B.sensechange(leverposition,A.getdialposition());
}

}
int Leverposition::getleverposition()
{
return leverposition;
}


void show(Wiperspeed &A,Dialposition &B,Leverposition &C)
{
cout<<"Lever position is:"<<C.getleverposition()<<endl;
cout<<"Dial position is:"<<B.getdialposition()<<endl;
cout<<"Wiper speed is:"<<A.getwiperspeed()<<endl;
}
void menu()
{
cout<<"\t\t.......1:Leverup........."<<endl;
cout<<"\t\t.......2:Leverdown......."<<endl;
cout<<"\t\t.......3:Dialup.........."<<endl;
cout<<"\t\t.......4:Dialdown........"<<endl;
cout<<"\t\t.......0:quit............"<<endl;
}
int main()
{
Dialposition B;
Leverposition C;
Wiperspeed A;
show(A,B,C);
int n;
do{
cout<<"Please input the operation:"<<endl;
menu();
cin>>n;
switch(n)
{
case 1:C.Senseleverup(B,A);break;
case 2:C.Senseleverdown(B,A);break;
case 3:B.Sensedialup(C,A);break;
case 4:B.Sensedialdown(C,A);break;
}
show(A,B,C);
}while(n!=0);
return 0;
}
踏岸寻柳 2008-11-23
  • 打赏
  • 举报
回复
看起来确实有些乱 。
bbb332 2008-11-23
  • 打赏
  • 举报
回复
关注!!
帅得不敢出门 2008-11-23
  • 打赏
  • 举报
回复
Dialposition 这个类的定义在哪 你要包含进去的.
就呆在云上 2008-11-23
  • 打赏
  • 举报
回复
耦合太紧了
呵呵
我注释了两行
可以编译通过,你看看再怎么修改吧
#include <iostream> 
using namespace std;
class Dialposition;
class Wiperspeed{
private:
int wiperspeed;
public:
Wiperspeed(int speed=0)
{
wiperspeed=speed;
}
void changewiperspeed(const int &A,const int &B)
{
if(A==0)
wiperspeed=0;
else if(A==1)
{
if(B==0)
wiperspeed=4;
else if(B==1)
wiperspeed=6;
else
wiperspeed=12;
}
else if(A==2)
wiperspeed=30;
else
wiperspeed=60;
}
void sensechange(const int &A,const int &B)
{
changewiperspeed(A,B);
}
int getwiperspeed()
{
return wiperspeed;
}
};
class Leverposition{
private:
int leverposition;
public:
Leverposition(int lever=0)
{
leverposition=lever;
}
int retleverposition() {
return leverposition;
}
void Senseleverup(Dialposition &A,Wiperspeed &B)
{
if(leverposition==3)
cout <<"You have been on top Lever!" <<endl;
else
{
leverposition++;
//B.sensechange(this->retleverposition(), A.getdialposition());
}
}
void Senseleverdown(Dialposition &A,Wiperspeed &B)
{
if(leverposition==0)
cout <<"You have been on the lowest Lever!" <<endl;
else
{
leverposition--;
//B.sensechange(this->retleverposition(), A.getdialposition());
}

}
int getleverposition()
{
return leverposition;
}
};
class Dialposition{
private:
int dialposition;
public:
Dialposition(int dial=0)
{
dialposition=dial;
}
void Sensedialup(Leverposition &A,Wiperspeed &B)
{
if(dialposition==2)
cout <<"You have been the top Dial!" <<endl;
else
{
dialposition++;
B.sensechange(A.getleverposition(),dialposition);
}
}
void Sensedialdown(Leverposition &A,Wiperspeed &B)
{
if(dialposition==0)
cout <<"You have been on the lowest Dial!" <<endl;
else
{
dialposition--;
B.sensechange(A.getleverposition(),dialposition);
}
}
int getdialposition()
{
return dialposition;
}
};
void show(Wiperspeed &A,Dialposition &B,Leverposition &C)
{
cout <<"Lever position is:" <<C.getleverposition() <<endl;
cout <<"Dial position is:" <<B.getdialposition() <<endl;
cout <<"Wiper speed is:" <<A.getwiperspeed() <<endl;
}
void menu()
{
cout <<"\t\t.......1:Leverup........." <<endl;
cout <<"\t\t.......2:Leverdown......." <<endl;
cout <<"\t\t.......3:Dialup.........." <<endl;
cout <<"\t\t.......4:Dialdown........" <<endl;
cout <<"\t\t.......0:quit............" <<endl;
}
int main()
{
Dialposition B;
Leverposition C;
Wiperspeed A;
show(A,B,C);
int n;
do{
cout <<"Please input the operation:" <<endl;
menu();
cin>>n;
switch(n)
{
case 1:C.Senseleverup(B,A);break;
case 2:C.Senseleverdown(B,A);break;
case 3:B.Sensedialup(C,A);break;
case 4:B.Sensedialdown(C,A);break;
}
show(A,B,C);
}while(n!=0);
return 0;
}
jeanie 2008-11-23
  • 打赏
  • 举报
回复
问题:class Dialposition和class Leverposition互相引用了对方的对象,
虽然在前面声明了类Dialposition,但是仍不能使用这个类里的成员函数。因为声明的时候并不知道类中有什么。
需要把这两个类的成员函数的实现都拿出来,放在这两个类的下面实现。也就是在类的定义都完成了,再实现他们的成员函数。
Non_Recursive 2008-11-23
  • 打赏
  • 举报
回复
发错误提示..

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧