C++ 静态QStringList的未定义引用

C++ 静态QStringList的未定义引用,c++,linux,qt,C++,Linux,Qt,因此,我想在电子表格应用程序的“文件”菜单中创建“最近使用的文件”部分。构建应用程序时,应该更新recentFileActions QStringList的函数生成以下错误/home/axel/QtSDK/Code/QMainWindow/mainwindow.cpp:-1:错误:未定义对“mainwindow::recentFiles”的引用 所以我从错误中得到,最近文件没有定义?因为我在标题的私有部分有这样的内容:QStringList static recentFiles 这是整个upda

因此,我想在电子表格应用程序的“文件”菜单中创建“最近使用的文件”部分。构建应用程序时,应该更新recentFileActions QStringList的函数生成以下错误/home/axel/QtSDK/Code/QMainWindow/mainwindow.cpp:-1:错误:未定义对“mainwindow::recentFiles”的引用

所以我从错误中得到,最近文件没有定义?因为我在标题的私有部分有这样的内容:QStringList static recentFiles

这是整个updateRecentFileActions函数:

void MainWindow::updateRecentFileActions(){
  QMutableStringListIterator i(recentFiles);
  while (i.hasNext()) {
    if (!QFile::exists(i.next()))
        i.remove();
  }

  for (int j = 0; j < MaxRecentFiles; ++j) {
    if (j < recentFiles.count()) {
        QString text = tr("&%1 %2")
        .arg(j + 1)
        .arg(strippedName(recentFiles[j]));
        recentFileActions[j]->setText(text);
        recentFileActions[j]->setData(recentFiles[j]);
        recentFileActions[j]->setVisible(true);
    } else {
        recentFileActions[j]->setVisible(false);
    }
  }
  separatorAction->setVisible(!recentFiles.isEmpty());
}
我将添加任何缺少的信息

多谢各位

QStringList static recentFiles;
这是唯一的声明。您需要在源文件中定义静态变量:

QStringList MainWindow::recentFiles;
如果您不明白为什么需要这样做,请查看查看

这是唯一的声明。您需要在源文件中定义静态变量:

QStringList MainWindow::recentFiles;

如果您不明白为什么需要这样做,请查看查看。

您的意思是我需要粘贴QStringList MainWindow::recentFiles;在.cpp的某个地方?或者我需要改变QStringList静态最近文件;对于QStringList主窗口::recentFiles;?因为如果我尝试添加QStringList MainWindow::recentFiles;对于my.cpp中的构造函数或创建问题的函数,我得到了一个无效的限定名使用错误:。。。。抱歉,我是c++@Axel新手。如果您在头文件中声明了该成员变量static,那么您需要在source.cpp文件中定义。如果不声明是静态的,则不需要这样做。理想情况下,我希望将recentFiles声明为static,这意味着我需要在.cpp中定义它。为了定义recentFiles,我想我需要复制QStringList主窗口::recentFiles;在.cpp中的某个地方?你的意思是我需要粘贴QStringList主窗口::recentFiles;在.cpp的某个地方?或者我需要改变QStringList静态最近文件;对于QStringList主窗口::recentFiles;?因为如果我尝试添加QStringList MainWindow::recentFiles;对于my.cpp中的构造函数或创建问题的函数,我得到了一个无效的限定名使用错误:。。。。抱歉,我是c++@Axel新手。如果您在头文件中声明了该成员变量static,那么您需要在source.cpp文件中定义。如果不声明是静态的,则不需要这样做。理想情况下,我希望将recentFiles声明为static,这意味着我需要在.cpp中定义它。为了定义recentFiles,我想我需要复制QStringList主窗口::recentFiles;在.cpp的某个地方?