Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

08.08.2014, 23:15. Просмотров 344. Ответов 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!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2014, 23:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как получить доступ к указателям в контейнере map? (C++):

Тип значения в контейнере map - контейнер list - C++
Возможно ли использовать следующий код: struct p { int id; }; int main() { map&lt;string, list&lt;p&gt; &gt; m;

Как получить элемент по ключу у map? - C++
Никак не могу понять что я делаю не так... У меня есть указатель std::map&lt;int,std::string&gt;* g; в коде я его инициализирую адресом на...

std::map find. Получить ключ(элемент) и как записать все данные при объявлений? - C++
Вопрос первый: как получить ключ контейнера map по данным? например: // id, name std::map&lt;int, string&gt; BookMap; BookMap bookmap; ...

Доступ к элементам в std::map - C++
У меня возник вопрос. В этом участке кода, есть два цикла, которые выводят содержимое контейнера std::map и вывод идентичен. Рационально...

Доступ к элементам вектора, который находится в map - C++
День добрый! Нужно ваше экспертное мнение. Я создаю map: std::map&lt;unsigned, std::vector&lt;int&gt;&gt; test_1 ; Затем я добавляю...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ? - C++
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200) Использовать именно map&lt;string,...

6
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
09.08.2014, 01:20 #2
Progers, по приведенному коду не понятно в чем может быть проблема. Вроде бы все нормально.
Но вообще оператор [] у std::map довольно специфический (он вставляет элемент с заданным индексом, если его не было ранее, и инициализирует его значением по-умолчанию, потом возвращает и только потом уже будет проведено присваивание, если нужно) и для твоих целей лучше использовать insert для вставки и find для поиска. Это будет и быстрее и безопаснее.
0
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
09.08.2014, 01:21 #3
Ну тут, думаю, нужно задаться вопросом "что же возвращает SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer[ID])". Ибо такое использование map вполне корректно.
0
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
09.08.2014, 13:36  [ТС] #4
Цитата Сообщение от QGuest Посмотреть сообщение
SDL_CreateTextureFromSurface
Он возвращает
C++
1
SDL_Texture*
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.08.2014, 13:40 #5
Цитата Сообщение от Progers Посмотреть сообщение
Он возвращает
это тип. А значение какое?
C++
1
SDL_Texture* tex = SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer[ID]);
Что будет в tex?
0
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
09.08.2014, 13:40 #6
Цитата Сообщение от Progers Посмотреть сообщение
Он возвращает SDL_Texture*
Ну это и так понятно. Но каково значение этого указателя?
Что покажет вот этот код:
C++
1
2
SurfaceContainer[ID] = Surface;
std::cerr << "Texture = " << SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer[ID]) << endl;
0
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
09.08.2014, 16:13  [ТС] #7
Всем спасибо, проблема была в передаче адреса для LocalRender из другого класса(Он получал NULL), просто он создавал совсем новы й класс и всё обнулялось.
Проблема решена!
0
09.08.2014, 16:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 16:13
Привет! Вот еще темы с ответами:

Как вставить map в map - C++
есть такой map map &lt; INT64 , map &lt;INT64 , map&lt; wArray , int &gt; &gt; &gt; tMenu; как его заполнить? пробовал так ...

Как получить доступ к элементам массива работая с ним как с указателем и адресной арифметикой - C++
int array = { {1,2,3}, {1,2},{1,2,3,4}, {1,2,3,4},{1,2,},}; for(int i = 0; i &lt; 25; i++) printf(&quot;%d &quot;, array); ...

Как получить доступ к указателю __vfptr - C++
P.S. У меня VisualStudio

Как получить доступ к приватному полю - C++
Всем доброго времени суток! Есть такое задание: нужно написать класс, который помимо всего прочего состоит из объекта еще одного класса, в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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