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

C++ trouble with extern - undefined reference

本文关键字:引用 未定义 外部 问题 C++      更新时间:2023-10-16

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&("的未定义引用

我做错了什么?

很可能

您没有在登录窗口中执行正确的 #include.cpp。 因此,编译器永远不会找到正确的函数。