主题:关于类的问题,在线等
yy21drd
[专家分:0] 发布于 2011-10-28 22:59:00
#include<iostream>
#include<string>
using namespace std;
class t
{
private:
int num;
char name;
public:
void out();
};
void t::out()
{cout<<name<<'\t'<<num<<endl;}
void main()
{
t m;
char a;
cin>>a;
if(strcmp(a,m.name)==1)
m.out();
else
cout<<"不匹配"<<endl;
}
m.name与a是不同的类型吗?如果要实现这个程序的功能,怎么改呢?谢谢[em16]
回复列表 (共2个回复)
沙发
argentmoon [专家分:13260] 发布于 2011-10-29 00:17:00
a和m.name是同类型,都是char,char的比较相等是用“等等于号”(==)
但你不能直接a == m.name,一来private变量不能直接访问,二来也破坏封装性,你可以给class T加一个比较相等的函数达到目的。
题外话:strcmp是比较字符串相等的,两个字符串相等的话,返回值是0,而不是1
板凳
bmfw [专家分:30] 发布于 2011-11-05 17:11:00
#include<iostream>
#include<string>
using namespace std;
class t
{
private:
int num;
char name;
char x;
public:
void initilize();
void cmp();
};
void t::initilize()
{
cout<<"num=";
cin>>num;
cout<<endl;
cout<<"name=";
cin>>name;
cout<<endl;
}
void t::cmp()
{
cout<<"Enter a symbol: ";
cin>>x;
if(name==x)
cout<<name<<num<<endl;
else
cout<<"Sorry!"<<endl;
}
void main()
{
t m;
m.initilize();
m.cmp();
}
我来回复