J'ai la structure suivante:
typedef struct{
int vin;
char* make;
char* model;
int year;
double fee;
}car;
Puis je crée un pointeur de type voiture
car *tempCar;
Comment attribuer des valeurs au tempCar? J'ai des problèmes
tempCar.vin = 1234;
tempCar.make = "GM";
tempCar.year = 1999;
tempCar.fee = 20.5;
Le compilateur n'arrête pas de dire que tempCar est de type car *. Je ne sais pas ce que je fais de mal
Vous devez utiliser l'opérateur -> sur les pointeurs, comme ceci:
car * tempCar = new car();
tempCar->vin = 1234;
tempCar->make = "GM";
//...
delete tempCar;
N'oubliez pas non plus d'allouer de la mémoire pour tempCar si vous utilisez un pointeur comme celui-ci. C'est ce que font "nouveau" et "supprimer".
Vous devez d'abord déréférencer le pointeur (pour obtenir la structure).
Soit:
(*tempCar).make = "GM";
Ou:
tempCar->make = "GM";
tempCar->vin = 1234
L'explication est assez simple: car*
est un pointeur sur car
. Cela signifie que vous devez utiliser l'opérateur ->
pour accéder aux données. Au fait, car*
doit être alloué si vous souhaitez l'utiliser.
L'autre solution consiste à utiliser une déclaration telle que car tempCar;
. La structure car
est maintenant sur la pile, vous pouvez l'utiliser tant que vous êtes dans cette portée. Avec ce type de déclaration, vous pouvez utiliser tempCar.vin
pour accéder aux données.
Votre tempCar est un pointeur, alors vous devez lui allouer de la mémoire et l'affecter comme ceci:
tempCar = new car();
tempCar->vin = 1234;
tempCar->make = "GM";
tempCar->year = 1999;
tempCar->fee = 20.5;
Sinon, déclarez tempCar de cette manière: car tempCar;