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

C++中如何让多个对象的参数指向同一块内存区域?

问题解决:对象数组共享参数同步更新的指针实现错误修复

问题根源

你写的Set_elemento函数完全没有修改类的成员变量,只是在操作局部临时指针:

  • p1、p2、j都是函数内的临时变量,函数结束后就会销毁
  • 执行p1 = &nodoi只是取成员变量的地址赋值给临时指针,随后p1 = nodo_i又用传入的指针覆盖了临时指针,全程没改变nodoi成员变量的值
  • 类的成员变量根本没被赋值,所以修改原对象时自然不会同步

正确实现步骤

1. 确保类成员为指针类型

首先你的类(假设名为Elemento)需要把共享参数定义为指针成员,这样才能存储外部对象的内存地址:

class Elemento {
private:
    // 用指针存储共享对象的地址
    Nodo* nodoi;
    Nodo* nodoj;
    Seccion* seccion;
public:
    void Set_elemento(Nodo *nodo_i, Nodo *nodo_j, Seccion *seccion_);
    // 按需添加其他成员函数、构造/析构函数(注意内存管理)
};

2. 正确实现Set_elemento函数

直接将传入的指针赋值给类的成员变量,让多个Elemento对象共享同一个Nodo/Seccion的内存地址:

void Elemento::Set_elemento(Nodo *nodo_i, Nodo *nodo_j, Seccion *seccion_) {
    // 直接赋值指针,让成员变量指向传入的对象地址
    nodoi = nodo_i;
    nodoj = nodo_j;
    seccion = seccion_;
}

效果验证

当你通过elementos[i].Set_elemento(&nodos[...], ...)赋值后,所有指向同一个nodos[x]的Elemento对象,其nodoi/nodoj都会指向同一块内存。此时修改nodos[x]的参数,所有关联的Elemento对象访问该参数时都会得到更新后的值,完全不需要手动逐个修改。

内容的提问来源于stack exchange,提问作者Hector Fabio Chaparro Fontalvo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:01:12