我正在开发一个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'的参数。
非常欢迎任何帮助/评论!
答案 0 :(得分:1)
在C ++中,您不需要枚举声明中的尾随标识符。只是:
enum OMColumnHeader : unsigned long {...};
杀死其他enum
,并将您的通话更改为setDefaultHeader
,如下所示:headerClass->setDefaultHeader( OMColumnHeader::OMColumnPWT);