J'essaie de remplacer tous les dynamicCasts de mon code par objectCast de QT. Mais j'ai rencontré un petit problème. Voici la hiérarchie de mes objets:objectCast Sideways casting
class ABase : public QObject
class IAbility; // Registered as Qt Interface
class ISize; // Registered as Qt Interface
class Derived : public ABase, public IAbility, public ISize; // Uses Q_INTERFACES
En utilisant objectCast je peux convertir un Derived à un iSize ou ESPONSABILITE. Cependant, dans un point de mon code, je veux effectuer la conversion suivante: Derived-> ISize-> IAbility. Ce dernier casting est l'endroit où je reçois une erreur. Puisque IAbility ne se rapporte à ISize d'aucune façon, cela pourrait causer un problème. Je pourrais faire un casting dynamique à ce stade, mais je préfère ne pas.
Malheureusement, la façon dont les classes sont présentées dans l'application actuelle. Le casting se passe dans une classe qui ne connaît pas Derived, donc je ne suis pas sûr que cela fonctionnerait. Mais l'option 2 fonctionnerait. J'ai une classe d'objet de niveau supérieur, donc créer une interface IObject de niveau supérieur que toutes les interfaces/objets doivent hériter virtuellement n'est peut-être pas si grave qu'une option. Merci. –
Je suis heureux d'avoir pu aider. Bonne chance à vous! –