我有几种类型共享共同的行为和相同的构造函数和操作符。一些看起来像这样: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