首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++中来自不同基类的歧义函数

C++中来自不同基类的歧义函数
EN

Stack Overflow用户
提问于 2012-06-08 14:24:16
回答 1查看 92关注 0票数 0

以下代码:

代码语言:javascript
运行
复制
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;
}

将在编译过程中给出一个错误:

代码语言:javascript
运行
复制
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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-08 14:32:19

函数重载不允许跨越类边界。您可以通过编写派生类来修复此问题,如下所示-

代码语言:javascript
运行
复制
class Derived : public Base1, public Base2
{
public:
    using Base1::go;
    using Base2::go;
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10943971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档