gpt4 book ai didi

c++ - 没有匹配的函数可以调用

转载 作者:行者123 更新时间:2023-11-30 03:25:08 26 4
gpt4 key购买 nike

我是继承新手..

#include<iostream>
using namespace std;
class base
{ public:
void show()
{
//do something here
}
};

class derive:public base
{ public:
void show(int n,int m)
{
//do something
}};


int main()
{
derive D;
D.show();
D.show(4,5);
}

所以编译器给出的错误是:没有用于调用“derive::show()”的匹配函数

最佳答案

当编译器处理

D.show();

它首先检查名称show 是否出现在derive 中。如果是,它不会在基类中查找名称。之后,它会尝试为其找到最佳匹配。在这种情况下,没有匹配项,因为 derive 中唯一名为 show 的函数需要两个 int 类型的参数。因此,

D.show();

无效。

如果您希望 base::showderive 中作为重载可用,您必须让编译器知道。

class derive : public base
{
public:

// Let the functions named show from base be available
// as function overloads.
using base::show;

void show(int n,int m)
{
cout<<"Derive Version.."<<n<<","<<m<<endl;
}
};

现在,您可以使用:

int main()
{
derive D;
D.show();
D.show(4,5);
}

关于c++ - 没有匹配的函数可以调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49205774/

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