You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++多继承时如何从有同名成员的两个父类分别选择要继承的成员

C++多继承同名成员的指定继承方案

你要的能力可以通过using成员声明实现,实现方案如下:

修正后的类C代码

class C : public A, public B // 注意原代码中B是默认private继承,按需调整继承权限
{
public:
    // 指名无限定访问x时优先使用A的x
    using A::x;
    // 指名无限定访问y时优先使用B的y
    using B::y;
    C() {}
};

说明

  • 完成上述修改后,直接访问C类实例.x会获取到A类定义的x(值为0),直接访问C类实例.y会获取到B类定义的y(值为1),完全匹配你的需求。
  • using声明仅指定无限定名时的默认查找优先级,不会删除父类的同名成员,你依然可以通过全限定名访问其他父类的同名成员,例如c.B::x可以访问B类定义的x,c.A::y可以访问A类定义的y。
  • 你之前测试时拿到的x、y均为0属于非标准行为:按照C++标准,未指定同名成员来源时直接访问会触发编译歧义报错,你拿到0大概率是编译器非标准扩展、或者你测试代码中主动加了A::限定导致。

内容的提问来源于stack exchange,提问作者kubo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:24:00