使用不同的模板参数继承

时间:2013-12-18 17:12:44

标签: c++ inheritance

我想知道在派生一个具有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函数一起正常工作?谢谢!

1 个答案:

答案 0 :(得分:1)

不,这不起作用。

如果参数列表具有相同的类型,则只能继承函数。是的,在您的情况下为真。

返回类型也必须相关。通常它们应该是相同的类型,但允许相关的类型 。简而言之,类型是相关的,如果它们是同一继承层次结构的一部分。但情况并非如此。

请注意,要启动继承,您需要在基类virtual中标记该函数。