列表中的值已被覆盖

时间:2018-04-26 18:09:47

标签: 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);

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

1 个答案:

答案 0 :(得分:1)

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

第一行使dato成为指针,但不会为其赋值,因此它不会指向任何内容。第二行尝试将某些内容复制到对象的nombre成员dato指向,但dato并未指向任何对象。

相关问题