在QDir目录之前预期的unqualified-id

时间:2014-10-23 18:16:59

标签: c++ macos qt build

在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 ...中出错方法数量使用directory作为QString,而方法directory() ...错误说“expected ')'

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

顺便说一句,尝试

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

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

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

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

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

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

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

可能我错过了一些包含?

在专业档案中,我有

QT += core \
      gui \ 
      svg

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在专业文件中,有DEFINES语句查找svnversion

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

DEFINES语句在空格处分解,并尝试给出一个单独的命令...之后只发出关于常量"Unversioned未正确定义的警告

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

#DEFINE directory "

这实际上打破了qt。