我想使用Base::push
在我的派生类型Derived
中实现一个纯虚方法IPusher::push
。但是,Derived
有自己的不同签名的push
方法(是的,我两个都需要)。
class Base
{
public:
void push(A);
};
class IPusher
{
public:
virtual void push(A) = 0;
}:
class Derived : public Base, public IPusher
{
public:
using Base::push;
void push(B);
};
这无法编译,并抱怨virtual void IPusher::push(A)
在Derived
中是纯的。
首先,我尝试添加override
,主要是为了查看错误是否不同
using Base::push override;
这抱怨说,;
应该在override
之前
发布于 2018-07-24 05:24:01
您可以像这样实现您的可疑想法:
class Derived : public Base, public IPusher
{
public:
void push(A a) override
{
// implement in terms of Base::push(A)
Base::push(a);
}
void push(B);
};
重新思考你的设计,或者在这里咨询一些建议:https://softwareengineering.stackexchange.com/questions/tagged/c%2b%2b
https://stackoverflow.com/questions/51487276
复制相似问题