期望一个类或命名空间。

3

我在C++中遇到了一个枚举的编译错误,错误提示为“期望是类或命名空间”。

  mf.setStatus(MediaFile::SyncStatus::Synced);

枚举类型定义如下:
 class MediaFile
 {
    public:
    enum SyncStatus 
    {
        New = 0,
        Remove = 5,
        Synced = 10,
        Unknown = 15
    };

    //...
 };

我正在Xcode中编译,但我猜这与C++语法有关,在Visual Studio上之前它编译得很好。可能Visual Studio会对此发出一些警告,但是已经构建了。请问有什么建议吗?


1
你在类声明结尾缺少了一个分号。因为你说这可以在VS下编译,所以这只是你问题中的一个笔误;-) - Cameron
是的,只是一个打字错误,实际类别更加复杂 :) - Ahmed
2个回答

9
尝试使用MediaFile :: SyncedSyncStatus是一个类型名称(例如SyncStatus theStatus),而不是一个命名空间。

4
请注意,C++11允许使用MediaFile::SyncStatus::... - Cameron
谢谢,@Cameron,我不知道。 - Michael Krelin - hacker

4
在C++中,枚举类型并没有定义命名空间,因此枚举值会被放置在周围的上下文中。所以你需要使用 MediaFile::Synced

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接