我想拥有一个从虚拟类(例如MAP)继承的类(例如ATLAS),以便可以在ATLAS的构造函数中指定MAP的一种特化(例如physicalMap或politicalMap) )。我想知道C++是否有可能?

class map {...};

class physicalMap: public virtual map {...};

class politicalMap: public virtual map {...};

class atlas: public virtual map {
     atlas(int i): physicalMap(){...}
     atlas(inti, int j): politicalMap(){...}
     ...
};

如何指定我想要的特化?

最佳答案

您不能将构造函数委派给“姐妹”(继承相同基类的类)类构造函数。

但是,对于模板,您可以从template参数继承并执行类似的操作:

class map {...};

class physicalMap: public virtual map {...};

class politicalMap: public virtual map {...};

template<typename Map>
class atlas: public virtual Map {
     atlas(int i): Map(){...}
     ...
};

...
atlas<physicalMap> a;
...

关于c++ - 从虚拟类继承并在构造期间指定它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44021097/

10-10 21:23