错误代码:
struct MyInt
{
MyInt() :mData(0) {}
MyInt(int data) : mData(data) {}
operator int() { return mData; }
int mData;
};
int main()
{
bool bFlag = false;
int aa = bFlag ? (short)2 : MyInt(2);
++aa;
return 0;
}
main.cpp: In function ‘int main()’:
main.cpp:14:20: error: operands to ?: have different types ‘short int’ and ‘MyInt’
int aa = bFlag ? (short)2 : MyInt(2);
~~~~~~~~~~~~~~^
main.cpp:14:20: note: and each type can be converted to the other
在VS2015和某些版本比较低的VS2017编译是没有错误的
修改为:
struct MyInt
{
MyInt() :mData(0) {}
MyInt(int data) : mData(data) {}
operator int() { return mData; }
int mData;
};
int main()
{
bool bFlag = false;
int aa = bFlag ? (short)2 : (short)MyInt(2);
++aa;
return 0;
}