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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.