![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
ButtonOFF |
|
||||||
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Есть класс
Есть код
Компилятор ругается
Как преобразовать в const? |
||||||
|
|||||||
Artemon |
|
||||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
to
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
во-первых, ключевое слово "class" нельзя использовать в качестве переменной.
во-вторых, ты обратил внимание не на то, на что следовало. list у тебя содержит объекты типа MyClass, а ты пытаешься в него запихнуть указатель. Думаю, тебе в строке 2 надо добавить звездочку после MyClass. |
|||
|
||||
ButtonOFF |
|
|||
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Эх поставил бы плюсики, но постов мало.
Спасибо. Добавлено @ 12:08 А можно ли переопределить какой-нибуть метод контейнера или добваить свой вообще? Хотелось сделать так, что удаляя указатель из контейнера, вызывался деструктор по этому указателю, т.е
Это сообщение отредактировал(а) ButtonOFF - 3.2.2012, 12:12 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
нельзя. но ты можешь воспользоваться умными указателями, которые сделают это за тебя: std::shared_ptr (доступен в C++11) или boost::shared_ptr
|
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
ButtonOFF |
|
||||||||
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Помогите еще с 1 задачей.
Стоит задача загрузить файлы в память, файлы представляют собой набор структур, однако мне нужен быстрый доступ к содержимому этих файлов, а так же быстрый поиск, не много подумав решил использовать контейнер map, примерно такого типа
Объясню почему, первая чать - ключ - имя файла, т.к это удовлетворяет моим условиям, и искать будем именно по названию загруженного файла. Вторая часть указатель на класс, с ним проблем вообще нет. И так, сразу же пришлось переделать в
но здесь опять были подводные камни... код должен все объяснить
Контейнер менять не хочу, т.к имеет быстрый поиск. Еще прикол в том, что
находит запись Это сообщение отредактировал(а) ButtonOFF - 12.2.2012, 18:48 |
||||||||
|
|||||||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
У вас в коде не так как вы привели. Так должно работать, (хотя смысла нет по любому
![]() m.insert(pair<char*, MyClass*>(c, myClass)); "с" заменить на "а" И самое главное. Раз вы во-всю используете СТЛ, так почему не используете стд::стринг? |
|||
|
||||
ButtonOFF |
|
||||
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Так вообще не находит ![]() Стринг не использую из-за проблем конвертирования string <-> char |
||||
|
|||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
ButtonOFF, извини не посмотрел даже. так вообще нельзя делать.
У вас мап использует ключом указатель, т.е он сравнивает указатели, а не строки. Короче перепешите с использованием std::string.
Какие проблемы? никаких проблем не должно быть. |
|||
|
||||
ButtonOFF |
|
|||
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
volatile, Ясно, просто мало где пишут какие типы можно использовать.
Проблема перевести из чар в стринг ![]() |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ну если стринг ни в какую нельзя, тогда нужно написать свой предикат сравнения, выбирайте
|
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
ButtonOFF |
|
|||
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
volatile, Нет, попробовать думаю стоит, всеравно мало где будет использоватся, да и самое главное что для поиска достаточно m.find("Имя_файла") (только что попробовал).
volatile, все ясно ![]() Это сообщение отредактировал(а) ButtonOFF - 12.2.2012, 19:40 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |