C++ 对Qt中静态声明变量的未定义引用?
我试图使用一个静态变量,这样我就可以调用它并从多个类作用域进行设置 以下是我的定义:C++ 对Qt中静态声明变量的未定义引用?,c++,qt,C++,Qt,我试图使用一个静态变量,这样我就可以调用它并从多个类作用域进行设置 以下是我的定义: class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); static QString webSite; private slots: void on_actionNew_Site_trigger
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"),"");
}
我得到这个错误:错误:未定义对“MainWindow::webSite”的引用。
我尝试了一些变化,但没有任何效果 仅将
静态
变量声明为类的成员是不够的,还需要定义它。为此,请将其放入您的cpp文件中:
QString MainWindow::webSite;
请注意定义中没有
静态
。这一行输入后,链接器将在哪个对象文件中放置静态变量的定义。仅将静态变量声明为类的成员是不够的,还需要定义它。为此,请将其放入您的cpp文件中:
QString MainWindow::webSite;
请注意定义中没有静态
。这一行输入后,链接器将在哪个对象文件中放入该静态变量的定义。这给了我错误:限定名称“MainWindow::webSite”QString MainWindow::webSite的使用无效代码>@JVE999它不应该给你那个错误。检查类声明后是否有分号(您的帖子中没有),并确保CPP文件包含标题。下面是关于ideone的declare/define概念的简要介绍。这篇文章解释了最近的一个错误:这是因为我放置了QString MainWindow::webSite代码>在函数中。修复后,一切都正常了。@JVE999您没有将定义放在函数中,是吗?是的,我就是这么做的。这给了我错误:限定名称“MainWindow::webSite”QString MainWindow::webSite的使用无效代码>@JVE999它不应该给你那个错误。检查类声明后是否有分号(您的帖子中没有),并确保CPP文件包含标题。下面是关于ideone的declare/define概念的简要介绍。这篇文章解释了最近的一个错误:这是因为我放置了QString MainWindow::webSite代码>在函数中。修复后,一切都正常了。@JVE999您没有将定义放入函数中,是吗?是的,我就是这么做的。