Форум программистов, компьютерный форум 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 <windows.h> using namespace std;
Метод левых прямоугольников и метод Симпсона для вычисления интеграла C (СИ)
Составить программу для исчисления интеграла с n количеством интервалов интегрирования. 2 методами; Метод левых прямоугольников и метод парабол(Симпсона)
C++ Найти все простые числа, не превосходящие заданного N >0 http://www.cyberforum.ru/cpp-beginners/thread1309054.html
Найти все простые числа, не превосходящие заданного N >0 с циклом
C++ Сделать реверс строки и каждый четвёртый символ выкинуть Помогите со строками пожалуйста.... Условие:Дана строка.Сформировать строку,содержащую символы данной в обратном порядке,причём каждый четвёртый символ (считая с конца данной строки) выкинуть. Желательно без использований функций и всяких наворотов.для новичка,пожалуйста подробнее

Показать сообщение отдельно
Pro100Tom
 Аватар для Pro100Tom
69 / 28 / 7
Регистрация: 29.10.2012
Сообщений: 325
24.11.2014, 04:01     Std push_back сумасшедший!
Здрасьте, приятели по несчастью! У меня проблема. Не спрашивайте зачем мне это надо и почему, просто объясните почему так происходит. У меня есть класс 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);
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru