1
我有以下最低代碼:轉換對象的C++內置類型
using namespace System;
long get_prop(Object^ v)
{
return Convert::ToInt32(v);
}
int main()
{
Object^ o1 = gcnew Int32(-1);
Object^ o2 = gcnew UInt32(0xFFFFFFFF);
long value1 = get_prop(o1);
long value2 = get_prop(o2);
return 0;
}
它給出了get_prop
功能OverflowException
例外。最後,我需要在純C++代碼中使用get_prop
的結果。什麼是寫get_prop
函數的正確方法,所以它在兩種情況下都可以毫無例外地工作。我可以像使用C++一樣使用某種模板嗎?還是有更簡單的解決方案?
'轉換:: ToInt64'會導致x64系統上同樣的問題,因爲我明白了嗎?至於溢出行爲,我需要保持原始值的位模式。 – 2010-11-09 18:32:16
不,一個* long *在MS編譯器和Windows上仍然是32位。而且UInt32也不會改變。 – 2010-11-09 18:43:18
有沒有像'static_cast'那樣處理溢出而不會產生異常? '(長)轉換:: ToInt64'看起來仍然不安全。 – 2010-11-09 18:53:44