1

main.cpp:

bool lgstatus;
User currentUser;
//...
int main(){ //... }

ログインウィンドウ.cpp:

void LoginWindow::on_cmdCreate_clicked()
{
  extern bool lgstatus;
  extern User currentUser;
  //...
  currentUser.setMail(ui->txtAccountMail->text().toStdString());
  currentUser.setName(ui->txtAccountName->text().toStdString());
  currentUser.setPassword(ui->txtAccountPassword->text().toStdString());
  //...
  lgstatus = true;
}

私のクラスUserには3つの機能があります。それぞれが文字列を引数として取ります。何が悪いのかわからない。私が変更してもコンパイラは文句を言いませんlgstatusが、私のcurrenUser.

クラス :

class User
{
public:
    User();
    User(const std::string &name, const std::string &password);
    User(const std::string &name, const std::string &password, const std::string &mail);

    void setName(const std::string &name);
    void setMail(const std::string &mail);
    void setPassword(const std::string &password);

private:
    std::string user_name;
    std::string user_password;
    std::string user_mail;
};

「set」関数は引数を user_name などに渡すだけです。それらも表示する必要はないと思います。

エラー:

  • 「User::setMail(std::string const&)」への未定義の参照

  • 「User::setName(std::string const&)」への未定義の参照

  • 「User::setPassword(std::string const&)」への未定義の参照

私は何を間違えましたか?

4

1 に答える 1

-1

loginwindow.cpp で正しい #include を行っていない可能性があります。その結果、コンパイラは正しい関数を見つけられません。

于 2013-06-06T04:35:04.587 に答える