在其他类中使用标题中的枚举

Posted

技术标签:

【中文标题】在其他类中使用标题中的枚举【英文标题】:Use enum from header in other class 【发布时间】:2014-10-31 15:06:46 【问题描述】:

我的枚举有点问题。

我想创建一个以枚举为参数的新对象。

啊哈:

#ifndef A_H_
#define A_H_

class A 
    enum myEnum  value1, value2;
;

A.cpp

#include "A.h"
//code

    function() 
     B* t = new B(myEnum::value1);
    

出现以下错误消息: “myEnum 不是类或命名空间”

怎么了?抱歉这个问题,但我是新手。

【问题讨论】:

应该是A::value1 【参考方案1】:

您将访问enum

A::value1

或者您可以使用enum class 之类的

enum class myEnum  value1, value2

然后您将值范围设置为

A::myEnum::value1

【讨论】:

别忘了公开枚举声明! 正确,这是一个重要的细节。【参考方案2】:

value 的完全限定名称是:

A::myEnum::value1

但是,C++(在 C++11 之前)不允许使用 enum 的名称(取决于编译器,它们可能会发出警告)。因此,在 C++11 之前,您需要:

A::value1

但是,枚举 (myEnum) 不可访问,因此您必须将其标记为 public

从 C++11 开始,最好使用 enum class,它必须是完全限定的。

【讨论】:

【参考方案3】:
class A 
    public:
        enum myEnum  value1, value2;
;

如上所述添加公共访问说明符。 像这样使用它

A::myEnum::value1

尽管以下方法会起作用

A::value1

【讨论】:

以上是关于在其他类中使用标题中的枚举的主要内容,如果未能解决你的问题,请参考以下文章

java中的枚举类

获取其他类中的变量

IOS textFieldDidChange 在其他类中的出口时

其他类中的 UIApplicationDelegate 函数

c++ - 如何使用构造函数中的'this'初始化其他类中的引用

Kivy - 屏幕管理器 - 访问其他类中的属性