j'essaye de mettre en place en C++ (std= c98 ) un typedef a base de structure pour prendre en compte un retour d'erreur et une autre structure de resultat defini comme suit
void * devant contenir le pointeur de la structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct s_res { bool ks; void *res; } t_res;
puis lors de l'utilisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct s_chk_idx { bool ks; size_t idx; } t_chk_idx;
et dans le code l'appellant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 t_res PhoneBook::getCmd(void) { t_chk_idx chk; t_res kr; ...do somethink kr.res = (void *)(&chk); return kr; }
le compilateur renvoie une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int main(void) { ... s_res ret; t_chk_idx chk; .... ret = Book.getCmd(); chk =(t_chk_idx)(ret.res); ... }
error: no matching conversion for C-style cast from 'void *' to 't_chk_idx' (aka 's_chk_idx')
chk =(t_chk_idx)(ret.res);
base.hpp:41:16: note: candidate constructor (the implicit copy constructor) not viable: cannot convert argument of incomplete type 'void *' to 'const s_chk_idx' for 1st argument
typedef struct s_chk_idx
j'ai egalement le meme prb en C ( error: conversion to non-scalar type requested) , est-ce qu'un cast void * vers pointeur de structure est possible ?
Partager