C++有个错,求高人给改下!!!!!
#include<iostream>
using namespace std;
class yonghu
{
private:
char mima1,mima2;
char name[10];
public:
yonghu();
void zhuce();
friend void denglu();
};
yonghu::yonghu()
{
mima1=0;
mima2=0;
}
void yonghu::zhuce()
{
cout<<"请输入账号\n";
cin>>name;
cout<<"请输入密码\n";
cin>>mima1;
}
void denglu()
{
cout<<"请输入账号\n";
cin>>name;
cout<<"请输入密码\n";
cin>>mima2;
if(mima1==mima2)
cout<<"登陆成功";
}
void main()
{
yonghu name;
yonghu yonghu;
int b,j;
for(j=0;j<10;j++)
{
cout<<"欢迎使用\n"<<"注册请按1\n"<<"登陆请按2\n";
cin>>b;
if(b=1)
{
void zhuce();
j=10;
}
else if(b=2)
{
void denglu();
j=10;
}
else
cout<<"输入无效,请重新输入!";
}
}
追问:注册完毕后多了一句,能再改改吗?
答案:错误不止一处,看程序应该是新手吧,呵呵,要加油咯。1.首先,void denglu()这个函数,你把他声明成了友元,这样可以访问类的私有成员,这是没错的。
但是注意“友元函数不能直接访问类的成员,,只能访问对象成员。”即访问前必须存在一个该类的对象。
所以在友元函数的参数中要指定访问的对象。
类体声明部分改为 friend void denglu(yonghu& yh);
函数实现部分改为void denglu(yonghu& yh)
同时name,mima都要改为对象成员 yh.name , yh.mima。
2.你在主函数中声明了两个对象yonghu name; yonghu yonghu;,但是后面没有用到。
其次在条件语句后调用函数时void zhuce(); void denglu();这是错误的,是声明函数的格式。
调用函数时前面不加返回值类型,若是对象调用自身成员函数要加上对象名.成员函数名。
分别改为name.zhuce() denglu().
3.条件语句if后面的括号内是一个条件,b=1是一个赋值语句,将它当做条件语句时默认总为true值。
b==1才是判断b是否等于1的条件。
修改后程序如下:
#include <iostream>
using namespace std;
class yonghu
{
public:
char mima1,mima2;
char name[10];
public:
yonghu();
void zhuce();
friend void denglu(yonghu& yh);
};
yonghu::yonghu()
{
mima1=0;
mima2=0;
}
void yonghu::zhuce()
{
cout<<"请输入账号\n";
cin>>name;
cout<<"请输入密码\n";
cin>>mima1;
}
void denglu(yonghu& yh)
{
char name[10];
cout<<"请输入账号\n";
cin>>name;
cout<<"请输入密码\n";
cin>>yh.mima2;
if(yh.mima1==yh.mima2)
cout<<"登陆成功";
else
cout<<"登陆失败";
}
void main()
{
yonghu name;
int b,j;
for(j=0;j<10;j++)
{
cout<<"欢迎使用\n"<<"注册请按1\n"<<"登陆请按2\n";
cin>>b;
if(b==1)
{
name.zhuce();
}
else if(b==2)
{
denglu(name);
j=10;
}
else
cout<<"输入无效,请重新输入!";
}
}
酱油!!
上一个:用C++怎么计算很大数字的阶乘
下一个:为什么使用小A,系统自动安装C++????????????