小编Pol*_*lem的帖子

如何在C++中将override关键字用于多个通用继承?

我有一个通用的IDetachable接口,它提供了一种方法:

template<class T>
class IDetachable {
public:
  virtual T detached() const = 0;
};
Run Code Online (Sandbox Code Playgroud)

我有这些示例类:

class A: public IDetachable<A> {
  virtual A detached() const override {
    // some implementation which returns a detached A object
  }
};
Run Code Online (Sandbox Code Playgroud)

继承B时会出现问题:

class B: public A, public IDetachable<B> {
  virtual B detached() const override {
    // some implementation which returns a detached B object
  }
};
Run Code Online (Sandbox Code Playgroud)

clang ++告诉我:

error: virtual function 'detached' has a different return type ('B')
  than the function it overrides (which …
Run Code Online (Sandbox Code Playgroud)

c++ generics inheritance

9
推荐指数
2
解决办法
276
查看次数

标签 统计

c++ ×1

generics ×1

inheritance ×1