我想在基类中有一个方法称为纯虚拟方法,该方法将在派生类中实现。但是,基类的无参数方法似乎没有被派生类继承。我究竟做错了什么?编译器为MSVC12。
错误C2660:'Derived :: load':函数未使用0个参数
这是一个完整的示例(由于错误而无法编译):
struct Base
{
void load() { load(42); }; // Making this virtual doesn't matter.
virtual void load(int i) = 0;
};
struct Derived : Base
{
virtual void load(int i) {};
};
int main()
{
Derived d;
d.load(); // error C2660: 'Derived::load' : function does not take 0 arguments
}
哦,派生类确实继承了void load()
。
但是您void load(int i)
在派生类中声明,这意味着它已被遮盖。
添加using Base::load;
到Derived
将load
from的所有非覆盖定义添加Base
到中的重载集Derived
。
或者,Base
使用scope-resolution-operator显式调用-class-version d.Base::load();
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句