A la compilation, sur la ligne avec l'étoile, le compilateur me sort une erreur : "class AWR_Shd_ShaderBase *(__thiscall AWR_Shd_ShaderList::*)(void)' ne peut pas etre converti en 'class AWR_Shd_ShaderBase *' "
Quelques explications s'imposent :
J'ai donc une classe AWR_Shd_ShaderList, qui est une suite simplement chainée de AWR_Shd_ShaderBase. Chaque élément de AWR_Shd_ShaderBase possède un pointeur (AWR_Next_Shader) sur le suivant. Current_Shader_List est le pointeur que j'utilise pour parcourir la liste et ne pas modifier le premier pointeur par erreur. Last_Shader renvoie un AWR_Shd_ShaderBase* sur le dernier élément de la liste. La fonction Add_Shader est donc pour ajouter un Shader à la fin de la liste.
theneoiceman
Messages postés78Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention23 avril 2010 22 nov. 2007 à 13:28
plop ^^
pour info ton this->lastShader est de type "AWR_Shd_ShaderBase" si je pige bien et donc tu essaies d'affecter une variable de type "AWR_Shd_ShaderBase" à Current_Shader_List qui est de type "AWR_Shd_ShaderList,", logique donc que ca ne passe pas vu qu'elles n'ont pas d'heritage en commun ni quoique ce soit.
la solution qui pourrait marcher serait la suivante : ( a tester tu me diras si ca marche)
// je suppose que tu renvoies le derniere élément ajouté car sinon ta valeur de
// retour n'etait pas cohérente avec la valeur de retour de ta fonction
return Current_Shader_List->Shader_Base
}