【问题标题】:expected unqualified-id before QDir directoryQDir 目录之前的预期 unqualified-id
【发布时间】:2014-12-19 12:12:44
【问题描述】:

在 mac 上构建 Qt 程序 - 在 windows 和 Linux 中都可以使用。

1  #include <QDir>
2  #include <QFileDialog>
3  ....
4  void afunction()
5  {
6    QDir directory;
7    if (! (directory.mkpath(mypath)) )
8    .......
9  }
10 void anotherfunction()  // likely irrelevant but showing why QFileDialog is included... no error here though
11 {
12   .....
13   filename = QFileDialog::getOpenFileName(0, caption, filename, filter, 0, QFileDialog::ReadOnly);
14   ....
15 }

第 6 行出错:

expected unqualified-id
  QDir directory
       ^
expected expresion
  if (! (directory.mkpath(mypath)) )
         ^

我点击“关注”QDir,然后转到qdir.h

class Q_CORE_EXPORT QDir
...

似乎存在...我将“directory”替换为“d”,它通过了这部分错误...在qfiledialog.h...中给出错误...其中许多方法都在使用@ 987654329@ 作为QString,同时还有一个方法directory()...错误说“expected ')'

我不知道如何处理实际 qt 文件中显示的错误,但我了解到,当我看到此类错误时,问题出在调用代码中。

顺便说一句,尝试

6    //QDir directory;
7    if (! (QDir::mkpath(mypath)) )

更不对,call to non-static member function without an object argument.我希望有一个静态版本,所以我不必创建对象......但显然我必须这样做,并且QDir有一个默认构造函数:

QDir(cost QString &path = QString());  inside `qdir.h`

仍然尝试过(就像 qt 文档中的示例一样):

6    QDir myDirectory(mypath);
7    if (! (myDirectory.mkpath(mypath)) )

重命名“目录”会导致 qfiledialog.h 出现错误,而不是重命名(使用“目录”作为变量名),在我的代码中仍然会出现同样的错误。

某处一定有一些错误......我知道mac上的构建选项比windows甚至linux更“严格”......

有没有可能我遗漏了一些包含?

在pro文件中,我有

QT += core \
      gui \ 
      svg

mac 上的 QT 版本:4.8.6(在使用 4.8.1 构建的 Linux 上)

我找不到导致我的错误的原因,我不知道还能尝试什么...我发现的具有类似错误的“类似问题”要么在功能块之外有代码,要么使用未定义的类成员......这里不是这种情况。

我不知道该错误是否与具有更严格设置的 mac 编译器有关,使用 qt 版本,即使使用 qt 本身(似乎其他人使用 c++ 没有 qt),使用我的代码.. .

【问题讨论】:

    标签: c++ macos qt build


    【解决方案1】:

    检查您#include 的所有(您自己的)文件是否正确,即平衡的#ifdef ... #endif 或在类定义末尾缺少分号等。从最后一个#include 开始。

    【讨论】:

    • 感谢您的回复...这确实是一个#define 问题...虽然不在源文件中。请看我的回答......但我会接受这个,因为它本质上是问题所在。
    【解决方案2】:

    在 pro 文件中,有一个 DEFINES 语句查找 svnversion

    不幸的是我没有 svn 目录...这导致它给出"Unversioned directory"的响应。

    DEFINES 语句在空格处发生故障,并试图给出一个单独的命令...在仅给出关于常量 "Unversioned 未正确定义这一事实的警告之后

    这实际上相当于定义一个常量

    #DEFINE directory "
    

    这实际上破坏了 qt。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多