LINUX.ORG.RU
Ответ на: комментарий от Insomnium

> Можно поинтересоваться зачем?

Есть класс My, в котором есть QList<My2*>. Нужно выдать этот список наружу причем так, что бы наружный код не сломал логику работы класса My вызывая какие попала методы классов My2.

SSZB ★
() автор топика
Ответ на: комментарий от Gorthauer

Хм, джедаизм тут в самый раз, поскольку иначе тупое копирование всего контейнера.

Но только не через list = *reinterpret_cast, а просто return reinterpret_cast<QList<lol*> > (&this->mylist_);

А то получается джедаизм с копированием ;-)

ly ★
()
Ответ на: комментарий от ly

> А то получается джедаизм с копированием ;-)

QList — это CoW-класс, оператор копирования всего лишь инкрементирует счётчик ссылок.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

> QList — это CoW-класс, оператор копирования всего лишь инкрементирует счётчик ссылок.

Оператор копирования не уберёт const из параметра шаблона.

const86 ★★★★★
()
Ответ на: комментарий от const86

> Оператор копирования не уберёт const из параметра шаблона.

Речь о копировании через reinterpret_cast.

Dendy ★★★★★
()
Ответ на: комментарий от SSZB

> Есть класс My, в котором есть QList<My2*>. Нужно выдать этот список наружу причем так, что бы наружный код не сломал логику работы класса My вызывая какие попала методы классов My2.
OMG. Советую пересмотреть дизайн.

PayableOnDeath ★
()
Ответ на: комментарий от PayableOnDeath

> OMG. Советую пересмотреть дизайн.

А что в этом плохого? То что есть несколько инстансов класса состояния которых связанны между собой?

SSZB ★
() автор топика
Ответ на: комментарий от ly

Неужели в контейнере так много элементов, что нельзя скопировать их в другой контейнер, а приходится костылить через reinterpret_cast?

panter_dsd ★★★★★
()
Ответ на: комментарий от namezys

Сделать объединение QList<void*> unsafe; QList<const void *> safe;

и ждать пока закрывающаяся дверь прищемит яйца

Gorthauer ★★★★★
()
Ответ на: комментарий от namezys

Ну если повезет, то руку не оторвет. Так и тут - повезет, работать будет

Ты не понял. Я прелагаю руки reinterpret_cast'ом отрывать.

Pavval ★★★★★
()
Ответ на: комментарий от SSZB

Почему бы не сделать функции const T * item(int index) и int count()? Списки вообще нежелательно возвращать, чтобы не было копирований (благо хоть QList реализует COW), уж тем более с преобразованием T * в const T * и тому подобной ерундой. Простое решение всегда предпочтительнее.

PayableOnDeath ★
()
Ответ на: комментарий от PayableOnDeath

> Почему бы не сделать функции

А можно сделать одну функцию, возвращающую пару итераторов: начало и конец списка.

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.