Objective-C ++项目中枚举类型参数的问题

时间:2016-02-09 18:47:06

标签: c++ ios enums objective-c++

我正在开发一个iOS应用程序(在xCode 7.2中),其中核心类是用C ++编写的。但是当我尝试测试具有枚举参数的函数成员时,我遇到了问题。我在这里和网络上的一些帖子之后尝试了不同的enum声明和转换方法。 此后你可以看到我试过的最新消息:

GlobalDefinitions.h:

enum OMColumnHeader : unsigned long
{
    OMColumnPOD           = 1 << 1,     //1
    OMColumnPWT           = 1 << 2,     //2
...
} OMColumnHeader;

在类标题(.h)中:

class HeaderManager
{
public:
 void setDefaultHeader(enum OMColumnHeader header);    

在类实现文件(.cpp)中:

void HeaderManager::setDefaultHeader(enum OMColumnHeader header)
{
    ...
}

在控制台项目的主文件(.mm)中:

#include <iostream>
#include " GlobalDefinitions.h"
#include " HeaderManager.h"

int main(int argc, const char * argv[])
{
  OMHeaderManager *headerClass= new OMHeaderManager();

  headerClass->setDefaultHeader((enum OMColumHeader)OMColumnPWT);

  delete headerClass;
  return 0;
}

我在最后一行(.mm文件)中收到以下错误: 无法使用'enum OMColumnHeader'类型的右值初始化'enum OMColumnHeader'的参数。

非常欢迎任何帮助/评论!

1 个答案:

答案 0 :(得分:1)

在C ++中,您不需要枚举声明中的尾随标识符。只是: enum OMColumnHeader : unsigned long {...}; 杀死其他enum,并将您的通话更改为setDefaultHeader,如下所示:headerClass->setDefaultHeader( OMColumnHeader::OMColumnPWT);