class MBool
{
protected:
bool mData;
public:
MBool() : mData(false) {}
MBool(bool Data) { mData = Data; }
};
void myFunc ( const MBool& rBool )
{
}
bool test()
{
myFunc( MBool() );
myFunc( ( MBool() ) ); // <-- Error E2188 Expression syntax
myFunc( MBool( false ) );
myFunc( ( MBool( false ) ) );
}
有人可以帮忙解释一下上面的错误吗?它发生在使用Embarcadero的XE7。使用Visual Studio编译相同的代码。
正如所示,XE7上的问题仅发生在test
方法的第二行,所有其他情况都可以正常编译。
修改 对不起,我在我的示例中粘贴了错误的构造函数,现在已经修复了。当用括号括起来时,带有boolean参数的构造函数会编译,但无参数构造函数不会编译。
答案 0 :(得分:2)
这是bcc32.exe中的错误。代码在bcc64中正常工作。
这是一个MCVE:
void f(int) {}
int main()
{
f((int())); // E2188 Expression syntax
}
作为一种解决方法,请取出额外的一对括号。
答案 1 :(得分:0)
我认为你得到的错误实际上来自:
myFunc( MBool( false ) );
而不是来自:
myFunc( ( MBool() ) );
在myFunc( MBool( false ) );
中,您将false
传递给MBool
的构造函数,但Mbool
只有一个带0参数的构造函数。如果在这个live example中查看您的代码,您会看到您遇到的唯一错误是调用不存在的构造函数的问题。
如果你从embarcadero看到这个E2188 help page错误,那就是错误:
如果在另一个语句中发生错误,则语法错误可能在周围的代码中。