我认为'__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