在其他类中使用头中的枚举

Use enum from header in other class

本文关键字:枚举 其他      更新时间:2023-10-16

我的枚举有点问题。

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

A.h:

#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不是类或命名空间"

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

您可以作为访问enum

A::value1

或者你可以使用类似的enum class

enum class myEnum { value1, value2}

然后你会把这个值作为

A::myEnum::value1

value的完全限定名称为:

A::myEnum::value1

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

A::value1

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

在C++11以后的版本中,您最好使用enum class,它必须是完全限定访问的。

class A {
    public:
        enum myEnum { value1, value2};
};

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

A::myEnum::value1

尽管以下内容将适用

A::value1