2015-03-19 129 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