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&)”的 undefined reference
对“User::setName(std::string const&)”的 undefined reference
对 `User::setPassword(std::string const&)' 的 undefined reference
我做错了什么?
最佳答案
很可能您没有在 loginwindow.cpp 中执行正确的#include。结果,编译器永远找不到正确的函数。
关于extern 的 C++ 问题 - undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16946832/