循环包括由于C ++中的类中的枚举

时间:2015-05-27 19:12:18

标签: c++ c++11

我有一个有趣的变体,经常重复的C ++循环包括两难。简而言之:我想使用在子类中定义的枚举作为父类中实例变量的类型。这是一个最小的例子:

A.H

newList

c.h

#ifndef A_H
#define A_H

#include "c.h"

class ClassA
{
public:
    ClassA() {};

    void setStatus(ClassC::Status status) { a_status = status; }
    void setA(int val) { a_var = val; }
    int valueA() { return a_var; }
    ClassC::Status status() { return a_status; }

private:
    int a_var;
    ClassC::Status a_status;
};

#endif // A_H

的main.cpp

#ifndef C_H
#define C_H

#include "a.h"

class ClassC : public ClassA
{
public:
    enum Status
    {
        Valid,
        Invalid
    };

    ClassC(): ClassA() {};

    void setC(int val) { c_var = val; }
    int valueC() { return c_var; }

private:
    int c_var;
};

#endif // C_H

我无法转发#include "a.h" int main(int argc, const char *argv[]) { ClassA *obj = new ClassA(); return 0; } 中的枚举声明,因为枚举的名称必须简单,而ClassC :: Status则不行。重要的是enum在子类的命名空间内,因为这些类有 lot ,我需要将枚举项的名称与其他枚举中的值隔离开来。有什么想法吗?

1 个答案:

答案 0 :(得分:7)

  

简而言之:我想使用子类中定义的枚举作为父类中实例变量的类型。

你做不到。你需要提出一个不同的机制。