2015-03-19 100 views
0

我認爲'__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)); 
} 

MSDN about _box

回答

1

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)); 
} 
+0

問題是關於託管C++而不是C++/CX。 – 2015-03-20 22:48:14

+0

@JamesMcNellis在這裏你去。 – Beginner 2015-03-21 20:17:56