我想知道在派生一个具有STL容器但是模板化参数不同的类时是否有任何问题。换句话说:
基类:
class GridCell {
//....
std::vector<Coord> getNeighbours(const int * coord);
//....
}
派生类:
class GridCell2D {
//....
std::vector<Coord2D> getNeighbours(const int * coord);
//....
}
class GridCell3D {
//....
std::vector<Coord3D> getNeighbours(const int * coord);
//....
}
多态性是否可以与getNeighbours函数一起正常工作?谢谢!
答案 0 :(得分:1)
不,这不起作用。
如果参数列表具有相同的类型,则只能继承函数。是的,在您的情况下为真。
但返回类型也必须相关。通常它们应该是相同的类型,但允许相关的类型 。简而言之,类型是相关的,如果它们是同一继承层次结构的一部分。但情况并非如此。
请注意,要启动继承,您需要在基类virtual
中标记该函数。