gpt4 book ai didi

c++ - 来自 C++ 中不同基类的模糊函数

转载 作者:行者123 更新时间:2023-11-27 23:23:41 24 4
gpt4 key购买 nike

以下代码:

class Base1
{
public:
void go() {}
};

class Base2
{
public:
void go(int a) {}
};

class Derived : public Base1, public Base2 {};

int main()
{
Derived d;

d.go(3);

return 0;
}

编译时会报错:

g++ -o a a.cc
a.cc: In function ‘int main()’:
a.cc:19:7: error: request for member ‘go’ is ambiguous
a.cc:10:10: error: candidates are: void Base2::go(int)
a.cc:4:10: error: void Base1::go()
make: *** [a] Error 1

很容易看出基类中的原型(prototype)是不同的。但为什么编译器不能检测到这一点并自动选择匹配的呢?

最佳答案

不允许跨类边界函数重载。您可以像这样编写派生类来解决此问题 -

class Derived : public Base1, public Base2
{
public:
using Base1::go;
using Base2::go;
};

关于c++ - 来自 C++ 中不同基类的模糊函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10943971/

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