抽象类中的纯虚函数,返回类型为base / derived类型

时间:2014-11-28 00:23:44

标签: c++ inheritance pure-virtual abstract-base-class

我希望使基类的每个派生类实现一个函数(在本例中为postfix运算符),该函数将派生类'type作为返回类型,如下所示:

class A {
    virtual A operator++(int) =0;
}

class B : public A {
    B operator++(int);
}

这会产生return type 'A' is an abstract class种错误。该怎么办?据我所知,postfix必须返回实际类型而不是类型的引用/指针。

1 个答案:

答案 0 :(得分:1)

如何使用CRTP pattern

template <typename T>
class A {
    virtual T operator++(int) =0;
};

class B : public A<B> {
    B operator++(int) override
    {
        // do something here
        return *this; 
    }
};
PS:刚看到@Marco A.发布了类似方法的链接。我会保持完整性的答案,不要感到任何投票的压力。