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

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

Войти
Регистрация
Восстановить пароль
 
Justix
73 / 19 / 1
Регистрация: 26.04.2012
Сообщений: 233
#1

Ошибка компилятора C2360 - C++

04.01.2013, 08:39. Просмотров 624. Ответов 7
Метки нет (Все метки)

Здравствуйте,форумчане)
Я тут переделываю загрузчик модели,чтобы мог не один начальный меш загрузить,а все,которые есть на сцене.В итоге пользуюсь контейнером vertex.
Значит,если кто не знает,в формате .3ds всё разбито оп блоком(бинарное всё)Эти блоки я определяю switch'ем.
Вот кусок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 case 0x4100:
              Mesh mesh;
            unsigned short numVerts, numTris,nTexCoord;
         break;
         case 0x4110:
             fread (&numVerts, sizeof (unsigned short), 1, f);
             Vertex vert;
              for (i=0; i<numVerts; i++)
            {   
        
               fread (&(vert.m_Pos.x), sizeof(float), 1, f);
               fread (&(vert.m_Pos.z), sizeof(float), 1, f);
               fread (&(vert.m_Pos.y), sizeof(float), 1, f);
               mesh.m_Verts.push_back(vert);
               
            }
             break;
Ошибка вылетает конечно из-за инициализации Mesh mesh; Vertex vert; и там дальше ещё подобные объявления есть.
Я знаю что избавиться можно взяв эти объявления в блок.Но мне-то нужно чтобы хотя бы Mesh была глобальна и создаваться он должны каждый раз при нахождении блока 0x4100.
Так как же обойти эти блоки?
Спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2013, 08:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка компилятора C2360 (C++):

Ошибка: error C2360: initialization of 'mat_C' is skipped by 'case' label - C++
Выдаёт такие ошибки: 1&gt;c:\users\данила\documents\visual studio 2005\projects\кур22222\кур22222\кур22222.cpp(101) : error C2360:...

Ошибка компилятора - C++
Не работает cout и cin Visual Studio 2008 Помогите пожалуста кто может:wall::wall::wall:

Ошибка компилятора - C++
Всем привет. Начну с самого конца. Есть некий файл SpellItemEnchantment.dbc - это просто хранилище значений (массив), его структура описана...

Ошибка компилятора - C++
Пишет на последнюю строчку, что требуется while и синтаксическая ошибка } #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

Ошибка компилятора - C++
#include &lt;iostream&gt; using namespace std; class ss { public: static bool progress; void changeProgress()

ошибка компилятора - C++
Всем привет! Я пытаюсь скомпилировать код, но компилятор выдает ошибку! class fileParser { private: int * fBuff; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
iifat
2235 / 1388 / 103
Регистрация: 05.06.2011
Сообщений: 3,822
04.01.2013, 11:12 #2
Вот это вот
Цитата Сообщение от Justix Посмотреть сообщение
Mesh mesh;
-- описание переменной для компилятора, понимаешь? Компилятор -- он весь работает до запуска программы, понимаешь? Если тебе хоть в каком-то случае нужна переменная -- значит, компилятору надо сказать, что она в принципе существует и предусмотреть способ сообщить программе, есть там, в ней, какая-то полезная информация, или нет.
0
Justix
73 / 19 / 1
Регистрация: 26.04.2012
Сообщений: 233
04.01.2013, 13:55  [ТС] #3
So what?

Добавлено через 31 минуту
Я поставил Mesh в глобальные перед свитчем,а остальное в блоки засунул,вроде работает...но!
C++
1
2
3
4
5
6
7
void Model3D::draw()
{
       for ( unsigned int i = 0; i < m_Meshes.size(); ++i )
       {
        RenderMesh( m_Meshes[i] );<-----ВОТ здесь вылетает
       }
}
Почему вылетает-то?
m_Meshes.size() == 1
0
iifat
2235 / 1388 / 103
Регистрация: 05.06.2011
Сообщений: 3,822
04.01.2013, 14:08 #4
So -- описание переменной mesh выносим перед switch куда-нить и предусматриваем либо подходящую инициализацию, эквивалентную отсутствию, буде такое возможно, либо признак присутствия/отсутствия.
0
Justix
73 / 19 / 1
Регистрация: 26.04.2012
Сообщений: 233
04.01.2013, 14:14  [ТС] #5
Цитата Сообщение от iifat Посмотреть сообщение
So -- описание переменной mesh выносим перед switch куда-нить и предусматриваем либо подходящую инициализацию, эквивалентную отсутствию, буде такое возможно, либо признак присутствия/отсутствия.
С этим разобрался,новая ошибка,смотрите выше)
0
iifat
2235 / 1388 / 103
Регистрация: 05.06.2011
Сообщений: 3,822
04.01.2013, 14:38 #6
Не знаю, я с этим не работал. Одно могу сказать точно: не строчку надо постить, а нерабочую прогу как минимум. По непонятно как сформированным данным никто тебе причину не назовёт.
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
04.01.2013, 14:41 #7
Цитата Сообщение от iifat Посмотреть сообщение
Одно могу сказать точно: не строчку надо постить, а нерабочую прогу как минимум.
И не коды ошибок, а их полный текст.
0
Justix
73 / 19 / 1
Регистрация: 26.04.2012
Сообщений: 233
05.01.2013, 13:46  [ТС] #8
Ну ок...вот кусок класса код с данным...
C++
1
2
3
4
5
6
7
8
9
10
11
      struct Mesh
              {
             
               VertexList      m_Verts;
               TriangleList    m_Tris;
               TexCoordList    m_Tex;
               GLuint          m_TexID;
              
             };
            typedef std::vector<Mesh> MeshList;
            MeshList            m_Meshes;
Добавлено через 2 минуты
И я вообще не понимаю что в том коде не понятно?Ну есть контейнер m_Meshes,ну размер у него один,тобишь элементов 1 всего,ну пытаюсь я к нему обратиться а он ошибку выдаёт..

Добавлено через 2 часа 15 минут
Вот весь класс
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
class Model3D{ 
    public:
        Model3D(){}
        unsigned int IdTex;
        char Name[255];
        char NameM[255];
        unsigned short num;
        unsigned short *face_nums;
 
              struct Vertex
              {
                glm::vec3   m_Pos;
              };
              typedef std::vector<Vertex> VertexList;
 
              struct Triangle
              {
                 short  m_Indices[3];
              };
              typedef std::vector<Triangle> TriangleList;
              
              struct TexCoord
              {
                glm::vec2   m_Coord;
              };
              typedef std::vector<TexCoord> TexCoordList;
 
              struct Mesh
              {      
               VertexList      m_Verts;
               TriangleList    m_Tris;
               TexCoordList    m_Tex;              
             };
            typedef std::vector<Mesh> MeshList;
            MeshList            m_Meshes;
 
            void RenderMesh( const Mesh& mesh );
            void draw();
            void LoadMeshFrom3DS(const char *file,const char *filetex);
 
      };
А это функция загрузки,надеюсь всё это поможет разобраться...=\
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
void Model3D::LoadMeshFrom3DS(const char *file,const char *filetex)
{
    FILE *f;
    unsigned short id,buuf;
    unsigned int len;
    unsigned char l_char;
    int i = 0;
        if ((f=fopen (file, "rb"))== NULL)   
      {
        MessageBox(NULL, 0, L"Ne ydalos onkrit model!", MB_OK); 
        exit(1);
  }; 
Mesh mesh;      
unsigned short numVerts, numTris,nTexCoord;      
while(ftell(f)<filelength(fileno(f))){
      fread (&id, 2, 1, f); 
      fread (&len, 4, 1, f); 
      switch (id)
      {
         case 0x4d4d: 
         break;
         case 0x3d3d:
         break;
         case 0x4000:
            do
            {
               fread (&l_char, 1, 1, f);
               Name[i]=l_char;
               i++;
            }while(l_char != '\0');
         break;
         case 0x4100:
         break;
         case 0x4110:
        {    fread (&numVerts, sizeof (unsigned short), 1, f);
             Vertex vert;
              for (i=0; i<numVerts; i++)
            {   
        
               fread (&(vert.m_Pos.x), sizeof(float), 1, f);
               fread (&(vert.m_Pos.z), sizeof(float), 1, f);
               fread (&(vert.m_Pos.y), sizeof(float), 1, f);
               mesh.m_Verts.push_back(vert);
               
            }
        }
             break;
         case 0x4120:
             {
             fread (&numTris, sizeof (unsigned short), 1, f);
             Triangle tri;
              for (i=0; i<numTris; i++)
            {         
               fread (&tri.m_Indices[0], sizeof(short), 1, f);
               fread (&tri.m_Indices[1], sizeof(short), 1, f);
               fread (&tri.m_Indices[2], sizeof(short), 1, f);
               fread (&buuf, sizeof(short), 1, f);  
               mesh.m_Tris.push_back(tri);
            }
             }
             break;
              case 0x4130:
             i=0;
             do
            {
               fread (&l_char, 1, 1, f);
               NameM[i]=l_char;
               i++;
            }while(l_char != '\0');
             fread (&num, sizeof (unsigned short), 1, f);
             face_nums = new unsigned short[num];
              for (i=0; i<num; i++)
            {       
               fread (face_nums, sizeof(unsigned short), 1, f); 
              }
             break;
 
         case 0x4140:
             {
              fread (&nTexCoord, sizeof (unsigned short), 1, f);
               TexCoord Tex;
              for (i=0; i<nTexCoord; i++)
            {         
               fread (&Tex.m_Coord.x, sizeof(float), 1, f);
               fread (&Tex.m_Coord.y, sizeof(float), 1, f);  
               mesh.m_Tex.push_back(Tex);
            }
             }
           // PrepareNormals(mesh);
            m_Meshes.push_back(mesh);
 
             break;
              default:
            fseek(f, len-6, SEEK_CUR);
      }
 
}
fclose(f);
 
 
}
Добавлено через 20 часов 28 минут
Аааааааааааап
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 13:46
Привет! Вот еще темы с ответами:

Ошибка компилятора C2784 - C++
Код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(void) { cout &gt;&gt; &quot;Hello, world&quot; &gt;&gt;...

(+ - % / *) ошибка математики компилятора? - C++
Всем привет! Мне нужно мнение общественности, чтобы разобраться с одной непонятной, для меня, ситуацией. Среда разработки - Arduino...

Непонятная ошибка компилятора - C++
Писал программу, вроде бы все должно быть правильно, но вот только компилятор VS2010 выдает такую ошибку: 1&gt;MSVCRTD.lib(crtexe.obj) :...

Непонятная ошибка компилятора - C++
http://s2.ipicture.ru/uploads/20131215/cH0nj1v0.png в чом ошибка???


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.01.2013, 13:46
Ответ Создать тему
Опции темы

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