class Base
{
public:
static int GetType_S()
{
return 1;
}
virtual int GetType()
{
return GetType_S();
}
};
class Son1 : public Base
{
public:
static int GetType_S()
{
return 2;
}
virtual int GetType()
{
return GetType_S();
}
};
我的问题是:当我需要一些其他类,如"Son1,Son2…",每个类都应该实现GetType和GetType_S函数,这两个函数是重复的。那么如何优雅地设计这些类,让子类只实现一个功能?最好不要使用宏。
你可以有一个类模板,每个SonN
继承,反过来继承Base
。
template <int Type>
class Middle : public Base
{
public:
static int GetType_S()
{
return Type;
}
virtual int GetType()
{
return GetType_S();
}
};
class Son1 : public Middle<2> {};
class Son2 : public Middle<3> {};
class Whatever : public Middle<42> {};
或者,如果这些类中没有其他内容:
using Son1 = Middle<2>;
using Son2 = Middle<3>;
using Whatever = Middle<42>;