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&)'的未定义引用
我做错了什么?
答案 0 :(得分:-1)
您很可能没有在loginwindow.cpp中执行正确的#include。因此,编译器永远不会找到正确的函数。