在派生类中扩展枚举属性

时间:2014-10-05 08:09:01

标签: c++

我正在寻找一种使用枚举属性的方法,可以在派生类中进行扩展,以便引入新属性。

由于类型不匹配,使用枚举失败,我能想到的另一个想法是在头文件中定义静态const int。

在C ++中有没有更好的方法呢?

我希望能够使用的场景如下:

#include <cstdio>

class A {
 public:
  typedef enum {
    Prop1 = 10,
    Prop2,
    Prop_last,
  } Property;

  void SetProp (Property p) { a = p; }
  Property GetProp() { return a; }
 private:
  Property a;
};

class D1 : public A {
 public:
  typedef enum {
    Prop3,
    Prop4,
  } Property;
};

class D2 : public A {
 public:
  typedef enum {
    Prop5,
    Prop6,
  } Property;
};

int main()
{
  D1 d1;
  D2 d2;

  d1.SetProp(A::Prop1);
  printf ("%d\n", d1.GetProp());
  d1.SetProp(D1::Prop3);  // compilation error: wrong type
  printf ("%d\n", d1.GetProp());

  return 0;
}

0 个答案:

没有答案