![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
RomanEEP |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
У меня объявлена переменная такого template класса:
Внутри класса RPArray объявлен оператор
Как мне получить указать на, к примеру, 1 элемент этого списка? Я делаю так:
и получаю ошибку: error C2440: 'initializing' : cannot convert from 'RPArray<Type>' to 'MbContour * |
||||||
|
|||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
RomanEEP, во-первых, когда ты определил указатель m_contourList на RPArray<MbContour>, то компилятор сразу тебе сделал стандартный оператор []. Думаю, тебе для начала нужно определять не указатель, а объект класса RPArray<MbContour*> (обрати внимание, где находится звездочка - это важно).
во-вторых, твой оператор [] возвращает ссылку на указатель. Скорее всего это неправильно, так как кто-то сможет случайно подпортить этот указатель. |
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
Дело в том что этот класс и соответственно все его операторы находятся внутри сторонней библиотеки, которые, видимо, сделали это в связи с какой-то необходимостью |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Просто поленились писать два оператора [] : Type *& operator []( size_t loc ) и Type * operator []( size_t loc ) const
|
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
ясно. Так есть возможность получить указатель из списка если объявить его так: RPArray<MbContour*>
я его объявил так и тем не менее конструкция
выдает ту же ошибку |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Там * не нужна, т.е. RPArray<MbContour>. RPArray всегда хранит только указатели.
|
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
ясно. тогда как мне к этому RPArray обратиться чтобы получить этот указатель?
|
|||
|
||||
Result |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 15.5.2011 Репутация: 3 Всего: 5 |
Разыменовывай указатель, применяй оператор [].
пример ЗЫ. В примере для простоты отсутствуют проверки, управление памятью и тд. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |