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函式,這兩個函式是重復的。所以如何優雅地設計這個類,讓子類只實作一個函式?而且最好不要使用宏。
uj5u.com熱心網友回復:
你可以有一個類模板,每個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>;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/320087.html
標籤:
上一篇:在cpp中模擬列舉繼承的解決方案
