Héritage de "templates recursive". - C++ - Programmation
Marsh Posté le 04-07-2008 à 14:56:15
Referencable<TextureSpeciale>::ref(machin);
sinon ça sent pas bon truc avec le delete this qui n'est pas symétrique à ton ref: tu delete pas ce que tu as new'é.
Marsh Posté le 04-07-2008 à 15:00:11
Ah ouais, mais du coup, c'est moche et pas clair à écrire... Enfin bref, je vais soit m'en contenter, soit utiliser deux trois macros. ^^
Et pour l'autre problème, tu veux dire qu'il faut que je fasse "delete (T*)this;" (même si c'est du cast tout pas beau) ?
Edit: Maintenant, ca me fait pareil pour le _refCount (membre public de Referencable), qui serait ambigu...
Marsh Posté le 04-07-2008 à 16:38:30
Je veux pas quoi que ce soit. Seulement tu allous un T et après tu Referencable<T>. Niveau CRTP ça coince, ça n'appelle pas le destructeur des classes filles.
Marsh Posté le 04-07-2008 à 14:38:53
Bonjour,
J'ai crée une classe "Referencable", qui est une classe template, et dont je voudrai faire hériter tous mes objets qui peuvent être "référencés": c'est à dire dont on garde une liste (id, objet), qui permet d'éviter la création d'objets "en double" (c'est pour gérer des textures dans un petit moteur de jeu).
Voici la classe (implémentée dans l'header, pour une autre raison):
Ensuite, je n'ai plus qu'à faire hériter ma classe Texture de Referencable<Texture>, à déclarer Referencable<Texture> comme "friend", et ça roule, je peut instancier mes textures avec Texture::ref("id" );
Maintenant, j'ai besoin de créer une nouvelle classe, disons TextureSpeciale, qui dérivera elle-même de Texture... et c'est là que ca marche plus !
J'ai bien essayé de faire re-dériver TextureSpeciale de Referencable<TextureSpeciale>, mais je me mange des "error: reference to 'ref' is ambiguous" à la compilation.
Quelqu'un peut m'éclairer, ou me proposer une autre solution viable ?
Merci d'avance !
Thoduv
Message édité par thoduv le 04-07-2008 à 14:40:32