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

继承vector时修改其大小的问题求助

为什么子类实例的继承vector成员不会同步变化?

这是个很典型的C++类成员变量基础问题,我来给你掰扯清楚:

你现在的父类Parent里的functions是普通的非静态成员变量——换句话说,每个类的实例(对象)都会拥有这份成员变量的独立副本。哪怕是继承自Parent的子类(child、child2),每个子类对象也会自带一个属于自己的functions vector,它们之间完全不共享。

举个实际的例子:

  • 当你创建一个child对象,调用它的change_size()方法时,你修改的只是这个child对象自己的functions,把元素塞进去后,它自己的vector大小变成1;
  • 而你创建的child2对象是另一个完全独立的实例,它的functions是从Parent继承来的全新副本,根本没被修改过,所以大小自然还是0。

如果想要所有子类实例共享同一个vector,你需要把functions声明为静态成员变量,修改父类的代码:

class Parent { 
public: 
    static vector<Parent*> functions; // 加static关键字
};
// 注意:静态成员必须在类外部定义(全局作用域)
vector<Parent*> Parent::functions;

这样一来,不管你创建多少个child、child2的实例,它们都会共用同一个functions vector,修改其中一个的内容,所有实例访问到的都是同一个数据,大小就会同步变化了。

另外提个小细节:你代码里的pushback写错啦,C++里vector的方法是push_back,记得修正这个拼写错误哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:07:14