検索

ホームページ  >  に質問  >  本文

c++关于虚函数,初始化成员列表,string运行错误问题

运行这段代码,每次输入都为2,结果color 后是空的?如果我改color为int型运行正确了,这是为什么?

#include<cstring>
#include<iostream>
using namespace std;
class ABC
{
private:
    string label="0";
    int rating=0;
protected:
    string Label(){return label;}   
    int Rating(){return rating;}
public:
    ABC(string la="null",int ra=-1):label(la),rating(ra){}   
    virtual void ViewABC()=0;   

};

class lacksDMA:public ABC
{
private:
    string color;
public:
    lacksDMA(string co="null",string la="null",int ra=-1):ABC(la,ra),color(co){}
    virtual void ViewABC()
    {
        cout<<"\n\nLabel:"<<Label()<<endl;
        cout<<"Rating:"<<Rating()<<endl;
        cout<<"Color:"<<color<<endl;  //不显示color值?
    }
};
const int CLIMITES=1;


int main()
{
    char c,choose;

    ABC *pDMA[CLIMITES];
    string latemp,cotemp,sttemp;
    int ratemp;


    for(int i=0; i<CLIMITES; i++)
    {
        cout<<"Label is :";
        getline(cin,latemp);
        cout<<"rating is :";
        cin>>ratemp;




        cout<<"Color is :";
        getline(cin,cotemp);
        pDMA[i]=new lacksDMA(cotemp,latemp,ratemp);


        while(cin.get()!='\n')
            continue;

    }
    for(int i=0; i<CLIMITES; i++)
    {
        pDMA[i]->ViewABC();
    }

}
伊谢尔伦伊谢尔伦2772日前458

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-04-17 15:00:12

    問題は、cin と getline を混合していることです。

    リーリー

    これらを混合する必要がある場合は、cin の後に

    を追加できます リーリー

    返事
    0
  • キャンセル返事