我有一个通用的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)