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
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;
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_chk_idx
{
	bool		ks;
	size_t	idx;
}	t_chk_idx;
puis lors de l'utilisation

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;
}
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
10
11
int main(void)
{
       ...
	s_res	ret;
	t_chk_idx chk;
 
      ....
	ret = Book.getCmd();
	chk =(t_chk_idx)(ret.res);
      ...
}
le compilateur renvoie une erreur

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 ?