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

时间:2014-03-21 18:05:51

标签: c++ qt

我尝试使用静态变量,因此我可以调用它并从多个类范围设置它。

这是我的定义:

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'

我尝试了一些变化,但没有任何表现可行。

1 个答案:

答案 0 :(得分:6)

static变量声明为类的成员是不够的,您还需要定义它。为此,请将其放入cpp文件中:

QString MainWindow::webSite;

请注意定义中缺少static。一旦该行进入,链接器将在哪个目标文件中放置该static变量的定义。