我認爲'__box':標識符在VS 2015編譯器中不推薦使用。那有什麼選擇?__box:找不到標識符
#using <mscorlib.dll>
using namespace System;
using System::Collections::Stack;
int main() {
Stack* pS = new Stack();
Int32 i = 5;
pS->Push(__box(i));
}
我認爲'__box':標識符在VS 2015編譯器中不推薦使用。那有什麼選擇?__box:找不到標識符
#using <mscorlib.dll>
using namespace System;
using System::Collections::Stack;
int main() {
Stack* pS = new Stack();
Int32 i = 5;
pS->Push(__box(i));
}
爲/clr:oldsyntax
支持在Visual Studio 2015年被刪除(舊的語法已經從Visual Studio 2005中不建議使用)。請參閱"Compiler Switch Deprecation/Removal Changes in Visual Studio '14'."
舊語法託管C++源代碼必須移植到C++/CLI。例如,
Stack^ pS = gcnew Stack();
Int32 i = 5;
pS->Push(i);
有implicit boxing現在。
Visual C++編譯器現在將值類型設置爲Object。由於編譯器定義的轉換將 類型的值轉換爲Object,因此可能是 。拳擊和拆箱可以將值類型作爲對象處理爲 。值類型(包括結構類型和內置的 類型,如int)可以轉換爲Object類型,也可以轉換爲Object類型。編譯器選項:/ CLR
從here代碼:
// clr_implicit_boxing_Std_conversion.cpp
// compile with: /clr
int f3(int^i) { // requires boxing
return 1;
}
int f3(char c) { // no boxing required, standard conversion
return 2;
}
int main() {
int i = 5;
System::Console::WriteLine(f3(i));
}
問題是關於託管C++而不是C++/CX。 – 2015-03-20 22:48:14
@JamesMcNellis在這裏你去。 – Beginner 2015-03-21 20:17:56