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

Problems with enum types parameters in Objective-C++ project

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

GlobalDefinitions.h:

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

在 class header(.h):

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

在 class 实现文件 (.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”的参数。

任何 help/comment 都非常欢迎!

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