首页 > 解决方案 > 列表中的值已被覆盖

问题描述

我在 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);

列表代码很长,我认为它是正确的(我以前使用过)所以我不会发布它,直到没有其他选项来保持问题简单。

标签: c++

解决方案


struct tipo_datoTS *dato;
strcpy(dato->nombre, $1);

第一行创建dato了一个指针,但没有给它赋值,所以它没有指向任何东西。第二行尝试将某些内容复制到对象指向的nombre成员中,但不指向任何对象。datodato


推荐阅读