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

Std push_back сумасшедший! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ После первой строки, содержащей минимальный элемент, вставить строку из нулей http://www.cyberforum.ru/cpp-beginners/thread1309084.html
Дан двумерный массив А (n * m) После первой строки содержащей минимальный элемент вставить строку из нулевых элементов
C++ Выяснить есть ли в двумерном массиве строка содержащие одинаковые элементы дан двумерный массив A (n * m) выяснить есть ли в нем строка содержащие одинаковые элементы C++ http://www.cyberforum.ru/cpp-beginners/thread1309082.html
Вычислить сумму N членов ряда C++
Вычислить сумму N членов ряда Вот мой код, но считает почему то не правильно=( Кто подскажет в чем проблема? Буду очень благодарен! #include <iostream> #include <math.h> #include...
C++ Найти все простые числа, не превосходящие заданного N >0
Найти все простые числа, не превосходящие заданного N >0 с циклом
C++ Сделать реверс строки и каждый четвёртый символ выкинуть http://www.cyberforum.ru/cpp-beginners/thread1309044.html
Помогите со строками пожалуйста.... Условие:Дана строка.Сформировать строку,содержащую символы данной в обратном порядке,причём каждый четвёртый символ (считая с конца данной строки) выкинуть. ...
C++ Создание одномерных массивов, поиск, вставка и удаление элементов нужно написать 1.Сформировать одномерный массив целых чисел, используя датчик случайных чисел и выполнить задание c использованием индексов "Удалить из массива все элементы совпадающие с его... подробнее

Показать сообщение отдельно
Pro100Tom
69 / 28 / 7
Регистрация: 29.10.2012
Сообщений: 330

Std push_back сумасшедший! - C++

24.11.2014, 04:01. Просмотров 392. Ответов 14
Метки (Все метки)

Здрасьте, приятели по несчастью! У меня проблема. Не спрашивайте зачем мне это надо и почему, просто объясните почему так происходит. У меня есть класс Model
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
#ifndef MODEL_H
#define MODEL_H
 
#include "string"
#include "string.h"
#include "Vertex.h"
#include "Face.h"
 
#include <vector>
 
using namespace std;
 
class Model
{
public:
    Model();
    Model(std::string name);
    ~Model();
    static void ReadModel(Model& intercepter);
 
    std::vector<Vertex> defaultVertices;
    std::vector<Vertex> transformedVertices;
    
    std::vector<Face> vertexFaces;
    Vertex* normals;
    Face* normalFaces;
    std::string name;
};
 
#endif
В cpp считываю данные с файла
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
void Model::ReadModel(Model& intercepter)
{
    string line;
    string textureFace;
    char separator;
    char op;
    int vertexCount = 0, faceCount = 0, normalCount = 0;
    ifstream infile(intercepter.name, ifstream::in);
 
    if (!infile.is_open())
    {
        return;
    }
 
    while (!infile.eof())
    {
        getline(infile, line);
        istringstream iss(line, istringstream::in);
        iss >> op;
 
        Vertex tempVertex;
        Face tempVertexFace, tempNormalFace;
 
        if (op == 'v')
        {
            iss >> tempVertex.x >> tempVertex.y >> tempVertex.z;
            tempVertex.w = 1.0f;
 
            intercepter.defaultVertices.push_back(tempVertex);
            intercepter.transformedVertices.push_back(tempVertex);
            
 
            vertexCount++;
        }
        else if (op == 'f')
        {       
            iss >> tempVertexFace.a >> separator >> separator >> tempNormalFace.a
                >> tempVertexFace.b >> separator >> separator >> tempNormalFace.a
                >> tempVertexFace.c >> separator >> separator >> tempNormalFace.a;
 
            intercepter.vertexFaces.push_back(tempVertexFace);
            faceCount++;
        }
    }
    infile.close();
 
    return;
}
Всё работает супер, объект там дальше рендерится и всё здорово. Если я добавляю еще одно поле
C++
1
std::vector<Vertex> finalizedVertices;
а в cpp добавляю строку
C++
1
intercepter.finalizedVertices.push_back(tempVertex);
, то программа через одну две прорисовки. Я даже не использую эти данные, я их просто создал и просто считал и всё! А программа вылетает. Иногда она не вылетает, если я переставлю эти строки местами
C++
1
2
3
intercepter.defaultVertices.push_back(tempVertex);
            intercepter.transformedVertices.push_back(tempVertex);
intercepter.finalizedVertices.push_back(tempVertex);
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru