Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
#1

Как получить доступ к указателям в контейнере map? - C++

08.08.2014, 23:15. Просмотров 327. Ответов 6
Метки нет (Все метки)

Здравствуйте, не как не могу разобратся с контейнером map, вот я создаю 2 таких контейнера
C++
1
2
  std::map<std::string, SDL_Texture*> TextureContainer;
    std::map<std::string, SDL_Surface*> SurfaceContainer;
Выполняю
C++
1
2
3
4
5
6
7
SurfaceContainer[ID] = Surface;
    TextureContainer[ID] = SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer[ID]);
    if (TextureContainer[ID] == NULL)
    {
        std::cerr << "Could not load texture because it's load nothing from Surface" << std::endl;
        IsSuccess = false;
    }
Но контейнер всегда показывает что он NULL, почему так происходит?
И ещё
C++
1
Return_Temp_Texture = TextureContainer[ID];
А именно Return_Temp_Texture так же всегда остаётся NULL хотя в дебагере пишет что в контейнере есть 3 указателя.
Как получить доступ к указателям в контейнере? И почему данный метод который я описал здесь не работает?

Добавлено через 34 секунды
Извиняюсь с заголовком перепутал не mao а map!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2014, 23:15     Как получить доступ к указателям в контейнере map?
Посмотрите здесь:
Тип значения в контейнере map - контейнер list C++
Как получить элемент по ключу у map? C++
C++ std::map find. Получить ключ(элемент) и как записать все данные при объявлений?
Доступ к элементам в std::map C++
C++ Доступ к элементам вектора, который находится в map
C++ Как получить доступ к элементам массива работая с ним как с указателем и адресной арифметикой
C++ Как получить доступ к элементам вектора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6918 / 4111 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
09.08.2014, 01:20     Как получить доступ к указателям в контейнере map? #2
Progers, по приведенному коду не понятно в чем может быть проблема. Вроде бы все нормально.
Но вообще оператор [] у std::map довольно специфический (он вставляет элемент с заданным индексом, если его не было ранее, и инициализирует его значением по-умолчанию, потом возвращает и только потом уже будет проведено присваивание, если нужно) и для твоих целей лучше использовать insert для вставки и find для поиска. Это будет и быстрее и безопаснее.
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
09.08.2014, 01:21     Как получить доступ к указателям в контейнере map? #3
Ну тут, думаю, нужно задаться вопросом "что же возвращает SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer[ID])". Ибо такое использование map вполне корректно.
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
09.08.2014, 13:36  [ТС]     Как получить доступ к указателям в контейнере map? #4
Цитата Сообщение от QGuest Посмотреть сообщение
SDL_CreateTextureFromSurface
Он возвращает
C++
1
SDL_Texture*
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.08.2014, 13:40     Как получить доступ к указателям в контейнере map? #5
Цитата Сообщение от Progers Посмотреть сообщение
Он возвращает
это тип. А значение какое?
C++
1
SDL_Texture* tex = SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer[ID]);
Что будет в tex?
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
09.08.2014, 13:40     Как получить доступ к указателям в контейнере map? #6
Цитата Сообщение от Progers Посмотреть сообщение
Он возвращает SDL_Texture*
Ну это и так понятно. Но каково значение этого указателя?
Что покажет вот этот код:
C++
1
2
SurfaceContainer[ID] = Surface;
std::cerr << "Texture = " << SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer[ID]) << endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 16:13     Как получить доступ к указателям в контейнере map?
Еще ссылки по теме:
C++ Как получить доступ к указателю __vfptr
Как получить доступ к приватному полю C++
C++ Как получить доступ к членам класса из функций
C++ Как получить доступ к массиву из другого класса?
C++ Как получить доступ к строке введенной в форму?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
09.08.2014, 16:13  [ТС]     Как получить доступ к указателям в контейнере map? #7
Всем спасибо, проблема была в передаче адреса для LocalRender из другого класса(Он получал NULL), просто он создавал совсем новы й класс и всё обнулялось.
Проблема решена!
Yandex
Объявления
09.08.2014, 16:13     Как получить доступ к указателям в контейнере map?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru