, 비주얼 스튜디오에서 동일 ++ C의 연산자는 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가 boxed 된 다음 두 개의 boxed int는 참조 ID를 확인합니다. 이는 항상 false입니다. –
@BenVoigt - interesting ... C++과 .NET을 잘 알고 있지만 C++/CLI에 능숙하지 않다는 것을 인정합니다. 그래서 위의 주장을 실제로 테스트하고 'number'를 찾은 정수 주소와 비교했습니다. 검사 (예 :'number == 0x1234abcd')에 의해'true '가 나타납니다. 일부 감독해야합니다. – JimmiTh