![](/img/trans.png)
[英]Expression Syntax Error e2188, C++, Embarcadero, Count_If,
[英]“E2188 Expression syntax error” when passing default-constructed object to function
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
方法的第二行,其他所有情况都可以编译。
编辑抱歉,我在示例中粘贴了错误的构造函数,现已修复。 当用括号括起来时,带有布尔参数的构造函数将编译,但是无参数构造函数将不会编译。
这是bcc32.exe中的错误。 该代码可在bcc64中正常工作。
这是一个MCVE:
void f(int) {}
int main()
{
f((int())); // E2188 Expression syntax
}
解决方法是,删除多余的一对括号。
我认为您得到的错误实际上来自:
myFunc( MBool( false ) );
并非来自:
myFunc( ( MBool() ) );
在myFunc( MBool( false ) );
您将false
传递给MBool
的构造函数,但是Mbool
只有一个带有0个参数的构造函数。 如果在此实时示例中查看您的代码,您将看到唯一的错误是调用不存在的构造函数的问题。
如果您查看embarcadero的此E2188帮助页面错误,那么该错误就可以解决:
如果该错误在另一条语句中发生,则语法错误可能在周围的代码中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.