Я пытаюсь заменить все dynamicCasts в моем коде объектом объекта QT. Но я столкнулся с некоторой проблемой. Вот иерархия моих объектов:objectCast Боковое литье
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
Использование objectCast я могу преобразовать Derived к ISize или IAbility. Однако в одной точке моего кода я хочу выполнить следующее преобразование: Derived-> ISize-> IAbility. Этот последний бросок - это то место, где я получаю сообщение об ошибке. Поскольку IAbility никак не связана с ISize, это может вызвать проблему. В этот момент я мог бы сделать динамический бросок, но я бы предпочел.
К сожалению, способ размещения классов в реальном приложении. Кастинг происходит в классе, который не знает о Derived, поэтому я не уверен, что это сработает. Но вариант 2 будет работать. У меня есть класс Object на верхнем уровне, поэтому создание интерфейса IObject верхнего уровня, который все интерфейсы/объекты должны фактически наследовать, возможно, не так уж плох. Благодарю. –
Рад, что я мог помочь. Удачи тебе! –