我在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);
列表代码很长,我认为它是正确的(之前我已经使用过)所以我不会发布它,直到没有其他选择来保持问题简单。
答案 0 :(得分:1)
struct tipo_datoTS *dato;
strcpy(dato->nombre, $1);
第一行使dato
成为指针,但不会为其赋值,因此它不会指向任何内容。第二行尝试将某些内容复制到对象的nombre
成员dato
指向,但dato
并未指向任何对象。