我计划创建一个接口(而不是 C++ 中的虚拟基类),其方法采用自己类型的参数。
class Base {
public:
virtual void seriousMethod(const Base &arg) = 0;
}
然而,派生类不应接受基类类型的参数,而是派生类类型的参数。
class Derived: public Base {
public:
virtual void seriousMethod(const Derived &arg) { /* ... */ }
}
我怎么会意识到这一点?我必须模板基类(例如Base<Derived>
)还是有更清洁的解决方案?