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

C++使用Scope resolution运算符调用父类成员函数报错问题咨询

C++代码编译错误原因解答

错误核心原因

你在类B的public定义区域直接写的A::Output();是函数调用语句,而C++语法明确规定:类的定义体中仅允许出现成员声明、成员定义、友元声明、嵌套类型定义、静态常量成员初始化等结构,不允许直接放置普通执行语句,所以这一行直接违反语法规则,触发编译报错。

常见使用场景修正

如果你是想要在子类B重写的Output函数中调用父类A的原有实现,只需要把A::Output();移动到B的Output函数体内部即可,修改后的B类代码如下:

class B :public A {
public:
    void Output() {
        A::Output(); // 函数体内部才可以执行函数调用逻辑
        cout << " B ";
    }
};

修改后运行程序会输出A B,符合虚函数重写的调用预期。
如果你的需求是不想重写父类的Output函数,完全不需要在子类中额外声明该函数,子类会自动继承父类的Output实现。


内容的提问来源于stack exchange,提问作者An Lê

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:57:00