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);
我正在开发一个 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);