Название: QList<A*> преобразовать в QList<B*> Отправлено: ltise от Август 12, 2010, 17:47 Подскажите плиз:
есть 2 класса: class A{}; class B : public A{} некоторая функция возвращает результат в списке QList<A*> но я знаю, что в списке одни потомки B... можно как-нить преобразовать QList<A*> в QList<B*> ? спасибо Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: BRE от Август 12, 2010, 17:53 А для чего?
Чего хочешь добиться? Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: ltise от Август 12, 2010, 18:25 А для чего? Чего хочешь добиться? избавиться от необходимости в цикле использовать static_cast QList<A*> lista = someFunc(); foreach(A* a, lista){ B * b = static_cast<B*>(a); b.blalalalalal() .... } Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: BRE от Август 12, 2010, 18:30 избавиться от необходимости в цикле использовать static_cast Так может попробовать просто:Код
Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: lit-uriy от Август 12, 2010, 18:30 ltise, только так и делать, с циклом.
Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: ltise от Август 12, 2010, 18:34 Я понял - вощем заморочка :), буду преобразовывать в цикле, где возможно прописывать виртуальные методы...
спасибо Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: lit-uriy от Август 12, 2010, 20:33 я думаю, можно сделать шаблонную функцию
Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: ltise от Август 12, 2010, 20:39 Получилось след. образом:
Код: QList<A*> lista; даже работает :) могут быть какие-нить грабли ? Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: lit-uriy от Август 12, 2010, 20:54 Х.З., тестируй
Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: Igors от Август 12, 2010, 22:21 Получилось след. образом: Это будет работать но такое "насильное" приведение показывает что спроектировано плохо. Ваш QList обязан содержать только указатели на объекты класса "B", иначе рухнет на выполнении. Зачем тогда было притворяться и объявлять его как QList<A*> ?Код: QList<A*> lista; даже работает :) могут быть какие-нить грабли ? Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: ltise от Август 12, 2010, 23:05 Это будет работать но такое "насильное" приведение показывает что спроектировано плохо. Ваш QList обязан содержать только указатели на объекты класса "B", иначе рухнет на выполнении. Зачем тогда было притворяться и объявлять его как QList<A*> ? Ситуация: private: QMultiMap<Key*, A*> _data; известно, что по Key keyB массив содержит только типы B. Но, значения могут быть выбраны только как QList<A*> QList<A*> listb = data.values(&keyB); допустим необходимо сделать 2 метода: QList<A*> getAllA(){ QList<A*> lista = data.values(&keyA); return lista; } QList<B*> getAllB(){ QList<A*> listb = data.values(&keyB); return ???? } Название: Re: QList<A*> преобразовать в QList<B*> Отправлено: Igors от Август 13, 2010, 14:51 Код
|