据微软称,在C++在Visual Studio中的同一运营商C++ 2010 http://msdn.microsoft.com/en-us/library/x04xhy0h.aspx
但是,看看下面的构建:为什么操作员不能在C++ - CLI中工作?
int^ number = 32;
if (number < 100)
MessageBox::Show("The number is not greater than 100");
构建失败 '<':“系统::的Int32^“不限定此运算符或转换到类型接受的预先规定的操作
if (number <= 100)
MessageBox::Show("The number is not greater than 100");
建立失效 ” < =“:” SYSTE m :: Int32 ^'未定义该运算符或转换为预定义运算符可接受的类型
if (number == 32)
MessageBox::Show("The is equal to 32");
构建成功...但是不显示消息。
if (number = 32)
MessageBox::Show("The is equal to 32");
构建成功..显示消息。 (为什么?等号的运算符是==)
为什么会发生这种情况?
.net确实为句柄定义了运算符...用于引用类型。但这是一种价值类型,没有理由去处理它。 –
并且不,它不会比较地址与32 ... 32个盒子,然后检查两个盒子的参考身份,这将始终是错误的。 –
@BenVoigt - 有趣...虽然我知道C++和.NET,但我承认我并不完全熟悉C++/CLI - 所以我实际上已经测试了上述声明,并将'number'与整数地址进行了比较通过检查(例如'number == 0x1234abcd')看起来确实产生了'true'。必须做一些疏忽。 – JimmiTh