在其他类中使用头文件中的enum

时间:2014-10-31 15:06:47

标签: c++ eclipse-cdt ubuntu-14.04

我的枚举有点问题。

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

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

怎么了?对不起这个问题,但我是新手。

3 个答案:

答案 0 :(得分:3)

您可以访问enum

A::value1

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

enum class myEnum { value1, value2}

然后你将值范围定为

A::myEnum::value1

答案 1 :(得分:2)

value的完全限定名称为:

A::myEnum::value1

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

A::value1

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

在C ++ 11及更高版本中,您最好使用enum class代替,必须完全限定访问。

答案 2 :(得分:0)

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

如上所述添加公共访问说明符。 像

一样使用它
A::myEnum::value1

尽管以下情况可行

A::value1