我希望使基类的每个派生类实现一个函数(在本例中为postfix运算符),该函数将派生类'type作为返回类型,如下所示:
class A {
virtual A operator++(int) =0;
}
class B : public A {
B operator++(int);
}
这会产生return type 'A' is an abstract class
种错误。该怎么办?据我所知,postfix必须返回实际类型而不是类型的引用/指针。
答案 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.发布了类似方法的链接。我会保持完整性的答案,不要感到任何投票的压力。