我正在寻找一种使用枚举属性的方法,可以在派生类中进行扩展,以便引入新属性。
由于类型不匹配,使用枚举失败,我能想到的另一个想法是在头文件中定义静态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;
}