2013-02-01 33 views
3

我得到一个编译时在C++枚举,错误说预期类或命名空间预期类或命名空间

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

列举很喜欢这个

class MediaFile 
{ 
    public: 
    enum SyncStatus 
    { 
     New = 0, 
     Remove = 5, 
     Synced = 10, 
     Unknown = 15 
    }; 

    //... 
}; 

我定义在xcode中编译,但我想它与C++语法有关,以前它在Visual Studio上编译得很好。视觉工作室可能给出了一些警告,但做了构建 有什么建议吗?

+1

您在类声明结尾缺少分号。既然你说这是根据VS编译,这必须只是在你的问题的错字;-) – Cameron

+0

是的,只是一个错字,实际的类有点复杂:) – Ahmed

回答

9

尝试用MediaFile::Synced代替。 SyncStatus是一个类型名称(如SyncStatus theStatus),而不是名称空间。

+0

谢谢,工作:) – Ahmed

+4

+1。请注意,C++ 11允许'MediaFile :: SyncStatus :: ...'。 – Cameron

+0

谢谢,@Cameron,我不知道。 –

4

enum s在C++中没有定义一个名称空间,所以枚举数的值进入了周围的上下文。您需要改为MediaFile::Synced

+2

双冒号,虽然;-) –

+0

谢谢;现在修好。 –

+0

感谢+1帮助:) – Ahmed

相关问题