gpt4 book ai didi

c++ - 派生类不从基类继承重载方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:08 26 4
gpt4 key购买 nike

我想让基类中的方法调用将在派生类中实现的纯虚方法。但是,基类的无参数方法似乎并没有被派生类继承。我究竟做错了什么?编译器是 MSVC12。

error C2660: 'Derived::load' : function does not take 0 arguments

这是一个完整的示例(由于错误而无法编译):

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 以从 Base 添加 load 的所有非覆盖定义> 到 Derived 中的重载集。

或者,使用范围解析运算符d.Base::load(); 显式调用Base-class-version。

关于c++ - 派生类不从基类继承重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26597542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com