我有幾種類型共享共同的行爲和相同的構造函數和操作符。一些看起來像這樣:C++區分結構相同的類
class NumberOfFingers
{
public:
void operator=(int t) { this->value = t; }
operator int() const { return this->value; }
private:
int value;
};
NumberOfToes
是相同的。
每個職業都有不同的行爲,這裏有一個例子:
std::ostream& operator<<(std::ostream &s, const NumberOfFingers &fingers)
{
s << fingers << " fingers\n";
}
std::ostream& operator<<(std::ostream &s, const NumberOfFingers &toes)
{
s << toes << " toes\n";
}
我怎樣才能儘量減少類定義的重複,同時又保持類類型不同?我不想讓NumberOfFingers
和NumberOfToes
從公共基類中派生出來,因爲我失去了構造函數和運算符。我猜想一個好的答案會涉及模板。
是什麼讓你覺得從一個共同的基礎,繼承會使你失去的建設者和經營者? –
@Björn你在說什麼?如果派生類沒有自己的派生類,它總是可以使用基類構造函數和運算符嗎? – paperjam