由于 2010 年对 C++/CLI 的支持非常糟糕(没有 C++/cli 向导!),我的项目之一仍然是 VS2005 C++/CLI。现在是迁移最后一个项目的时候了。不幸的是,它在编译时会出现错误。其中两个我不明白,因为它们之前工作得很好,尝试在 VS2012 上编译这个小片段:
enum class EMyEnum
{
Unknown,
NotBetter,
};
Array ^lEnums=Enum::GetValues(EMyEnum::typeid);
Object ^test=lEnums->GetValue(0);
EMyEnum t=(EMyEnum)test; // VS2012 ERROR -> Cannot cast
String ^thetext=t.ToString(); // VS2012 ERROR -> Left of ToString() needs object
不用说,在 VS2005 中它不仅编译时没有错误或警告,而且还可以按预期工作。