Qt中对静态声明变量的未定义引用

Undefined reference to statically declared variable in Qt?

本文关键字:未定义 引用 变量 声明 静态 Qt      更新时间:2023-10-16

我试图使用一个静态变量,所以我可以调用它,并从多个类作用域设置它。

我的定义是:

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    static QString webSite;
private slots:
     void on_actionNew_Site_triggered();
}

这里是我设置它的地方:

void MainWindow::on_actionNew_Site_triggered()
{
    webSite = QFileDialog::getExistingDirectory(this,tr("Choose Directory"),"");
}
我得到这个错误:error: undefined reference to 'MainWindow::webSite'

我已经尝试了一些变化,没有显示出工作。

仅仅将static变量声明为类的成员是不够的,还需要定义它。为此,将以下内容放入您的cpp文件:

QString MainWindow::webSite;

注意定义中没有static。进入这一行后,链接器将在哪个对象文件中放置static变量的定义。