【发布时间】:2013-09-11 08:07:04
【问题描述】:
我计划创建一个接口(而不是 C++ 中的虚拟基类),其方法采用自己类型的参数。
class Base {
public:
virtual void seriousMethod(const Base &arg) = 0;
}
然而,派生类不应接受基类类型的参数,而是派生类类型的参数。
class Derived: public Base {
public:
virtual void seriousMethod(const Derived &arg) { /* ... */ }
}
我怎么会意识到这一点?我是否必须对基类进行模板化(例如Base<Derived>)还是有更清洁的解决方案?
【问题讨论】:
-
更重要的是 - 这样做的动机是什么?
-
“派生类不应该接受基类类型的参数,而是派生类类型的参数”——那么拥有虚拟方法有什么意义呢?
-
@EdHeal 具体来说,是由派生实现指定的 A-Star 搜索通用节点类。
-
@AdamS - 什么是 A-Star 搜索?
标签: c++