Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка СХХ0030


Автор: Vetos 4.7.2009, 00:42
Здравствуйте ломаю голову вод над чем:
Код

    struct Vertex
    {
        float Coordinates[3];
    };
    struct Triangle
    {
        float Normals[3][3];
        float S[3],T[3];
        int   Vertices[3];
    };
    struct Mesh
    {
//        TMyMaterial *Material;
        int numTriangles;
        int *Triangles;
    };
int numVertices;
Vertex *Vertices;
int numTriangles;
Triangle *Triangles;
int numMeshes;
Mesh *Meshes;


При загрузке с файла не возникает ни каких проблем:
Код


        for (int i = 0; i < numTriangles; i++ )
        {
            file >> Triangles[i].Vertices[0];
            file >> Triangles[i].Vertices[1];
            file >> Triangles[i].Vertices[2];
        }


А вот тут вся беда начинается:
Код

            for (int j = 0; i < numTriangles; j++ )
            {
                glBegin ( GL_TRIANGLES );
                for (int k = 0; k < 3; k++){
                    glVertex3fv(Vertices[Triangles[Meshes[i].Triangles[j]].Vertices[k]].Coordinates);
                }
                glEnd ();
            }


Vertices[k] вдруг почемуто невозможно вычислить значение.
Сама ошибка выглядит так:
Код

Первый этап обработки исключения в "0x004119fa" в "OpenGL.exe": 0xC0000005: Нарушение прав доступа при чтении "0x7182ed34".
Необработанное исключение в "0x004119fa" в "OpenGL.exe": 0xC0000005: Нарушение прав доступа при чтении "0x7182ed34".


Скриншот куска кода прилогается.
Помогите пожалуйсто.

Автор: Vetos 4.7.2009, 10:37
Что никто не сталкивался с такой проблемой?

Автор: zim22 4.7.2009, 11:00
Цитата(Vetos @  4.7.2009,  00:42 Найти цитируемый пост)
 glVertex3fv(Vertices[Triangles[Meshes[i].Triangles[j]].Vertices[k]].Coordinates);

разбейте эту строчку на ДЕСЯТЬ других. и тогда поймёте, в чём у вас ошибка.
***
сарказм: у меня программа не работает, ошибка: error C2297: '*' : illegal, right operand has type 'int *'
как исправить?
Код

int main() {
  int arr[10];
  arr = (*arr[&arr[5-arr[2]] - arr[0] * &arr[1]);
}

Автор: Vetos 4.7.2009, 11:07
Блин нашел ошибку. Так пропариться из-за простой опечатки:
Код

for (int j = 0; i < numTriangles; j++ )   <-------- Вместо  j написал i;


Добавлено через 4 минуты и 3 секунды
Цитата(zim22 @  4.7.2009,  11:00 Найти цитируемый пост)
Цитата(Vetos @  4.7.2009,  00:42 ) glVertex3fv(Vertices[Triangles[Meshes[i].Triangles[j]].Vertices[k]].Coordinates);разбейте эту строчку на ДЕСЯТЬ других. и тогда поймёте, в чём у вас ошибка.


Та уже разбивал там все правильно, но такое

Цитата(zim22 @  4.7.2009,  11:00 Найти цитируемый пост)
int main() {  int arr[10];  arr = (*arr[&arr[5-arr[2]] - arr[0] * &arr[1]);}


Это конечно жесть smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)