使用getline时,getter函数不起作用

时间:2017-12-07 07:41:38

标签: c++ getline

我正在使用getline从用户那里获取字符串输入,如下所示。

            cout << "Enter full name : ";
            cin >> fullname;
            cin.ignore();
            getline(cin, fullname);

getline工作正常我可以用空格写全名。但问题是,当使用getter函数时,我无法获得全名。

 if (strcmp(u[i]->getemail(), email) == 0) { // if entered email matches the email
                cout << "User name -->" << u[i]->getusername()<<endl;    //member details is displayed
                cout << "Full name -->" << u[i]->getfullname()<<endl;
                cout << "Password  -->" << u[i]->getpassword()<<endl;
                flag = true;
                break;

顺便说一下,下面是变量fullname

的setter / getter函数
  string User::getfullname()

{
    return fullname;
}

void User::setfullname(string fullname)

{
    fullname = fullname;
}

这是构造函数

  User::User(char* username, char* password, string infullname, char* email)
{                       //constructor
    strcpy(this->username, username);
    strcpy(this->password, password);
    setfullName(infullname);
    strcpy(this->email, email);
}

这是Out put https://www.dropbox.com/s/oya9wtswd3phq7o/error.jpg?dl=0

我是C ++的新手,如果能指出错误,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

通过阅读您的代码,我认为问题可能来自您的setter function

void User::setfullname(string fullname)
{
    fullname = fullname;
}

function参数和class属性共享相同的名称。您需要使用this关键字进行识别。或者更改函数的参数名称。

喜欢这样的东西:

void User::setFullName(string str)
{
    this->fullName = str;
}