C++ 令人困惑的gcc对Qt4 setValidator使用的投诉

C++ 令人困惑的gcc对Qt4 setValidator使用的投诉,c++,gcc,qt4,compiler-errors,C++,Gcc,Qt4,Compiler Errors,我们很难理解gcc为什么会抱怨我们应用程序中的这一行: doubleFrom->setValidator(new QDoubleValidator(doubleFrom)); 针对这些投诉: error: expected type-specifier before 'QDoubleValidator' error: expected `)' before 'QDoubleValidator' error: no matching function for call to 'QLineE

我们很难理解gcc为什么会抱怨我们应用程序中的这一行:

doubleFrom->setValidator(new QDoubleValidator(doubleFrom));
针对这些投诉:

error: expected type-specifier before 'QDoubleValidator'
error: expected `)' before 'QDoubleValidator'
error: no matching function for call to 'QLineEdit::setValidator(int*)'
candidates are: void QLineEdit::setValidator(const QValidator*)
(我删掉了冗长的文件路径和行号。)

是的,setValidator想要一个常量QValidator*,这就是我们在这一行源代码中所做的。为什么gcc希望过早地看到一个“'),并认为我们正在向setValidator提供一个int*


当然,“昨天编译得很好,我们没有做任何更改。真的!”

我知道这是非常基本和明显的,但是你是否包含了


“之前的预期类型说明符”几乎总是意味着类型定义不可见。

我知道这是非常基本和明显的,但是您是否包含了


“之前需要类型说明符”几乎总是意味着类型定义不可见。

尝试首先创建对象并分配给临时类型。使用此变量调用setValidator。然后查看哪一行无法编译。尝试首先创建对象并分配给临时对象。使用此变量调用setValidator。然后看看哪一行编译失败。就是这样!奇怪的是,它之前是如何编译的,或者那行在我们的svn回购中没有任何变化记录的情况下消失了。我甚至尝试了svn revert,但没有成功。它可能已经编译了,因为另一个头包含了它,而您也包含了它header@David当前位置正是我要说的。@David-是的,这是我们的直觉,有一些未知数量的嵌套包含,但我们不会花时间验证它。这是一个非常大的软件系统,充满了令人惊讶的代码。只有当您看到错误消息足够多的时间来了解它的真正含义时,这才是显而易见的。许多GCC的错误信息假定你知道C++文法,就像编译器作者知道的那样:(就是这样!奇怪的是,它之前是如何编译的,或者该行在我们的svn回购中没有任何更改记录的情况下消失了。我甚至尝试了svn revert,但没有成功。它可能编译了,因为另一个标题包含了它,而您也包含了它。)header@David当前位置正是我要说的。@David-是的,这是我们的直觉,有些不确定NW嵌套的数包含,但我们不需要花时间来验证它。这是一个非常庞大的软件系统,它充满了代码惊奇。只有当你已经看到错误消息足够的时间来知道它的真正含义时,才是显而易见的。很多GCC的错误信息假设你知道C++文法,就像编译器作者知道的那样: