c++ - 列表中的值已被覆盖
问题描述
我在 C++ 中工作。我需要创建并存储这些对象的列表(前两个是第三个的一部分):
typedef char tipo_cadena[50];
union tipo_valor {
int c_entero;
float c_real;
bool c_bool;
};
struct tipo_datoTS {
tipo_cadena nombre;
int tipo;
union tipo_valor valor;
};
问题是,当我在列表中插入一些值时,它会用最后一个值覆盖所有值。例如,如果我插入 1,2,3,4(假设我在示例中使用 int),则列表将具有 4,4,4,4。
我想我使用了一些错误的指针(自从我使用 c 以来已经很长时间了)。这是我添加值的代码:
union tipo_valor valor;
struct tipo_datoTS *dato;
strcpy(dato->nombre, $1);
valor.c_entero = $3;
dato->tipo = 1;
dato->valor = valor;
myList->add(dato);
列表代码很长,我认为它是正确的(我以前使用过)所以我不会发布它,直到没有其他选项来保持问题简单。
解决方案
struct tipo_datoTS *dato;
strcpy(dato->nombre, $1);
第一行创建dato
了一个指针,但没有给它赋值,所以它没有指向任何东西。第二行尝试将某些内容复制到对象指向的nombre
成员中,但不指向任何对象。dato
dato
推荐阅读
- excel - 我在行中的 10 个单元格中生成随机数 -1 或 1,其中 vba 中随机数的总和始终等于 + 值
- r - 如何按日期对数据帧进行子集化并在 R 中执行多个操作?
- security - 使用 Rust Rocket Web 框架保存 ApiKey 的安全解决方案是什么?
- c - 访问内存地址后无法访问指针中的值
- aws-api-gateway - MOCK AWS API 网关中的客户端证书
- django - 在 Django 表单集中隐藏 can_delete 字段
- r - 从 paste0() 打印出一个在另一个的顶部作为字符类
- apache-kafka - 具有递增列查询的 Kafka 源 JDBC 连接器最近没有显示任何结果,尽管它以前曾经工作过
- database - REST API 应该如何查找使用服务器的日期时间更新资源?
- powershell - 如何从 Powershell 中的文件名列表中删除索引指定的空格