visual-studio-2012 - "error C2228: left of ' .ToString ' must have class/struct/union"

标签 visual-studio-2012 c++-cli

所以我最近获得了 Visual Studio 2012。我将 Visual Studio 2010 解决方案转换为 Visual Studio 2012 项目。在我转换它之前它可以工作。

我有这行代码:

this->Text = global::ProjectName + " (" + global::Type.ToString() + ") - Path Creator 2.0";

其中 global::Type 是:

ref class global {
public:
    static Rct3PathType Type;
    ...
};

...Rct3PathType 是:

enum class Rct3PathType {
    Basic = 0x02060206,
    Extended = 0x05060506,
    Queue = 0x01070107
};

我在编译时调用 global::Type.ToString() 时收到错误,提示“错误 C2228:'.ToString' 的左侧必须具有类/结构/联合”。考虑到在切换到 Visual Studio 2012 之前这一切都编译得很好,我不确定问题是什么! :(

此外,当我尝试运行最后一次成功的构建(使用 Visual Studio 2010 构建)时,我在启动时收到运行时错误,提示“程序无法启动,因为您的计算机中缺少 MSVCR100D.dll”。我知道这可能与当前的问题无关,但有人知道为什么会发生这种情况吗?

感谢您的帮助, 亚历克斯

最佳答案

“错误 C2228:'.ToString' 的左侧必须具有类/结构/联合”:enum class 也是 C++11 枚举的语法。要使其成为 C++/CLI 枚举,请为其提供可访问性说明符,这在 C++11 枚举上是不允许的。换句话说,private enum classpublic enum class 会将其从 C++11 枚举更改为 C++/CLI 枚举。这在 VS2010 中不是问题,因为它不支持 C++11 枚举。

“程序无法启动,因为您的计算机缺少 MSVCR100D.dll。”:VS2012 使用与 VS2010 不同的 C 运行时。 MSVCR100D 是 Microsoft Visual C 运行时版本 10.0,调试版本。这个DLL是随VS2010一起安装的,没有其他方法可以得到它。如果您有旧的发布版本,则可以从 Microsoft 获取可再发行的运行时( x86x64 ),并安装它以使其运行。 (这将是 MSVCR100.dll,末尾没有“D”。)

关于visual-studio-2012 - "error C2228: left of ' .ToString ' must have class/struct/union",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292981/

相关文章:

asp.net-mvc - 无法添加 MVC Controller VS2012 给出 "object reference not set to an instance of an object"

c# - 在 C# 对象上调用 C++/CLI delete

c# - 错误 C2143 : missing ';' before '->'

c++-cli - 可以为 .Net Monitor::Enter/Exit 实现 RAII(在 C++ CLI 中)

visual-studio-2010 - 如何解决错误C2061 : syntax error : identifier 'FormOutOfTime'

c - Visual Studio : "No source file" in Disassembly

c++ - 无法更改 VC++ CMFCOutlookBar 的 Tab 标签文本

c++ - 查找数组开头和结尾的函数

c++ - 识别终止时抛出的 C++ 异常

c++ - LNK 2022 : Inconsistent layout information, 迁移到VS2010后