在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有一个默认的构造函数:
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 \
svgmac上的QT版本: 4.8.6 (在用4.8.1构建的Linux上)
我找不到是什么导致了我的错误,我也不知道还能尝试什么.我发现的具有类似错误的“相似问题”要么在函数块之外有代码,要么使用未定义的类成员.不是这里的情况。
我不知道这个错误是否与具有更严格设置的mac编译器有关,使用qt版本,甚至使用qt本身(似乎其他人使用c++ no qt)和我的代码.
发布于 2014-10-23 20:47:55
检查您#包含的所有(您自己的)文件的正确性,即平衡#ifdef . #endif或类定义末尾缺少分号等。
发布于 2014-10-23 20:29:13
在pro文件中,有一个DEFINES语句寻找svnversion。
不幸的是我没有svn目录..。从而给出了"Unversioned directory"的响应。
DEFINES语句在空格处分解,并尝试发出一个单独的命令..。只对常量"Unversioned未正确定义这一事实发出警告之后
这实际上相当于定义一个常量。
#DEFINE directory "这实际上破坏了qt。
https://stackoverflow.com/questions/26534658
复制相似问题