正确使用枚举元素

时间:2018-05-19 16:19:06

标签: c++ enums namespaces

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

A.H

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;。但后来我得到了编译错误:

  

'凉爽::甲'不是命名空间或无范围的枚举

关于如何只需要返回OK的任何想法?

1 个答案:

答案 0 :(得分:1)

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

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

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

解决方案3:制作名为#define

OK
#define OK A::Status::OK