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

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

Войти
Регистрация
Восстановить пароль
 
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
#1

map не работает - C++

22.06.2013, 20:09. Просмотров 400. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
struct Model3D
{
    struct top
    {
        float x,y,z;
    };
    struct texture_coordinate
    {
        float u, v;
    };
    struct normal
    {
        float x,y,z;
    };
    struct poligon
    {
        top *v[3];
        texture_coordinate  *t[3];
        normal  *n[3];
    };
    struct rgb
    {
        float r , g , b;
    };
    struct Stexture
    {
        GLuint  texture;
        AUX_RGBImageRec *textureI;
        std::string NameFile;
    };
    struct mtl
    {
        float Ns ;
        rgb Ka ;
        rgb Kd ;
        rgb Ks ;
        float d ;
        Stexture tex;
    };
 
    int cv, cvt, cvn, cvp, cf;
    top *v;
    texture_coordinate *vt;
    normal *vn;
    poligon *f;
    std::map <std::string, mtl> NameMTL;
 
};
C++
1
2
3
ifile >>s;
keyS = s;
Model.NameMTL[keyS];
на момент вызова оператора [] переменной Model.NameMTL значение keyS равно "base" , при вызове вылетает ошибка ,что делать?

Добавлено через 7 минут
C++
1
2
3
ifile >>s;
keyS = s;
Model.NameMTL[keyS];
код содержится в функции которая принимает Model так (Model3D &Model)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2013, 20:09     map не работает
Посмотрите здесь:

Не работает map<char*, Image*> - C++
class NPC { map&lt;char*, Image*&gt; images; public: void InitImg(char* id, Image* img) { images = img; } virtual void...

Приведение map<int, B> к map<int, A> - C++
class A {}; class B : public A {}; unordered_map&lt;int, shared_ptr&lt;B&gt; &gt; bs; Как привести bs к unordered_map&lt;int, shared_ptr&lt;A&gt;...

map - C++
объясните пожалуйсто как это работает, почему тут &lt;string, int, less&lt;string&gt;&gt; так много перемееных #include &lt;map&gt; #include &lt;string&gt; ...

Двумерный MAP - C++
Собственно, пытаюсь создать конструкцию типа: #include &lt;map&gt; using namespace std; int main() { map&lt;int, map&lt;int, int&gt;&gt; MainMap;...

Коварный map - C++
Доброго всем дня, уважаемые форумчане! Прошу прояснить следующий момент, почему при проходе по мапе теряется пара с ключом &quot;4&quot;. Если флаг...

Сортировка в map - C++
Доброго времени суток. Имеется структура map: map&lt;string, size_t&gt; words; В ней содержится слово и число. map превращается в vector: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7191 / 4357 / 634
Регистрация: 29.11.2010
Сообщений: 11,867
22.06.2013, 20:09     map не работает #2
@Van111, по идее возвращается структура и т.к. это пользовательский тип, то возникает вопрос: а что, собственно вернуть?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
22.06.2013, 20:17  [ТС]     map не работает #3
@MrGluck, как мне записать в Model.NameMTL
переменную mtl t_mtl с ключом keyS?
C++
1
Model.NameMTL[keyS] = t_mtl
сделал так - не работает
MrGluck
Модератор
Эксперт CЭксперт С++
7191 / 4357 / 634
Регистрация: 29.11.2010
Сообщений: 11,867
22.06.2013, 20:21     map не работает #4
C++
1
2
// Model3D::mtl t_mtl;
Model.NameMTL.insert(std::make_pair(keyS, t_mtl));
Добавлено через 32 секунды
Решение с++11
C++
1
Model.NameMTL.emplace(keyS, t_mtl);
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.06.2013, 12:50  [ТС]     map не работает #5
@MrGluck, спасибо большое

Добавлено через 14 часов 6 минут
C++
1
2
3
4
5
6
void loadmtl(string NameFile, Model3D &Model, map <string, Model3D::mtl> &NameMTL)
{
        Model2.NameMTL[keyS] =  t_mtl;  // работает
        NameMTL[keyS] =  t_mtl; // ошибка
    Model.NameMTL[keyS] =  t_mtl; // ошибка
}
C++
1
    loadmtl(nameF,Model, Model.NameMTL);
не могу понять в чём проблемма!?
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.06.2013, 13:07     map не работает #6
при вызове loadmtl что за Model туда отдается? это живой объект? Не константный? какие конкретно ошибки возникают? в стек вызовов посмотрите. Может быть вы не весь код показали и у t_mtl есть какие-то не дефолтные конструкторы\деструкторы\операторы=?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 13:16     map не работает
Еще ссылки по теме:

Unordered map c++ 11 - C++
Добрый день, ранее не использовал данный контейнер: какие плюсы и минусы его использования. Как понять, что именно он нужен тебе?

Считать в map - C++
Даны координат точки и угол, в файле, то есть там 1 2 45. как это считать в map для последующей работы. #include &quot;stdafx.h&quot; #include...

STL map - C++
Вопрос:как мне узнать что не создавался map с заданым str? #include &lt;iostream&gt; #inlclude &lt;map&gt; #include &lt;string&gt; using namespace...

Сортировка map - C++
Здрасьте. Есть map (я с ним ещё плохо знаком) map &lt;string, list&lt;string&gt; &gt; data; задача - отсортировать списки в нём (методом sort()). ...


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

Или воспользуйтесь поиском по форуму:
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.06.2013, 13:16  [ТС]     map не работает #7
ошибку нашёл
это
C++
1
memset(&Model,0,sizeof(Model3D));
Добавлено через 52 секунды
он уничтожал микрофлору map
Yandex
Объявления
23.06.2013, 13:16     map не работает
Ответ Создать тему
Опции темы

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