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

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

Восстановить пароль Регистрация
 
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
22.06.2013, 20:09     map не работает #1
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 C++
C++ map<> в C, не в C++!
map C++
Map'ы C++
Map'ы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
22.06.2013, 20:09     map не работает #2
@Van111, по идее возвращается структура и т.к. это пользовательский тип, то возникает вопрос: а что, собственно вернуть?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
22.06.2013, 20:17  [ТС]     map не работает #3
@MrGluck, как мне записать в Model.NameMTL
переменную mtl t_mtl с ключом keyS?
C++
1
Model.NameMTL[keyS] = t_mtl
сделал так - не работает
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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,585
Записей в блоге: 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
1477 / 1053 / 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 не работает
Еще ссылки по теме:

C++ Как вставить map в map
Приведение map<int, B> к map<int, A> C++
C++ Map of map

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

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

Текущее время: 11:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru