正确使用枚举元素



假设我有这些文件,如下所示:

namespace cool
{
class A
{
public:
enum Status {OK, NotOK, NotOK2};
};
}

B.h

#include "A.h"
namespace cool
{
class B
{
public:
A::Status doSth(int param1);
};
}

B.cpp

using cool::A;
using cool::B;
A::Status B::doSth(int param1)
{
return A::Status::OK;
}

所以我的问题是我不想写A::Status::OK,每当我想返回状态类型时。有没有办法只返回OK?或者Status::OK,这样我至少可以节省一些时间,而不是每次都写类名。

到目前为止,我显然已经尝试添加using cool::A::Status;using A::Status;using cool::A::Status::OK;。但是后来我得到编译错误:

'cool::A' 不是命名空间或无作用域枚举

关于如何返回的任何想法?

解决方案 1: 您已经可以删除Status::

return A::/*Status::*/OK;

解决方案 2: 您可以将enum Status {OK, NAK, MAK};移到 A 类之外

解决方案 3:创建一个名为OK#define

#define OK A::Status::OK

最新更新