回 帖 发 新 帖 刷新版面

主题:关于类的问题,在线等



#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个回复)

沙发

a和m.name是同类型,都是char,char的比较相等是用“等等于号”(==)

但你不能直接a == m.name,一来private变量不能直接访问,二来也破坏封装性,你可以给class T加一个比较相等的函数达到目的。

题外话:strcmp是比较字符串相等的,两个字符串相等的话,返回值是0,而不是1

板凳

#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();
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册