外部的C ++问题 - 未定义的引用

时间:2013-06-05 18:02:53

标签: c++ qt extern

main.cpp中:

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

loginwindow.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&)'的未定义引用

我做错了什么?

1 个答案:

答案 0 :(得分:-1)

您很可能没有在loginwindow.cpp中执行正确的#include。因此,编译器永远不会找到正确的函数。