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

Вылетает программа при удалении элемента вектора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка библиотеки в коде программы?:) http://www.cyberforum.ru/cpp-beginners/thread750688.html
Всем привет. Вот этот код компилируется без ошибок и все работает #include <windows.h> #include <gl\GLU.h> #include <gl\GL.h> #include <time.h> #include <math.h> #include "glaux.h" #include <cstdio> #pragma comment (lib,"opengl32.lib")
C++ AppWizards Привет! Создаю приложение MFC в Visual Studio 10, после задания названия будущего приложения меня кидает в браузер (фото 1). Но на странице кнопки не активны. Папка с проектом создается, но не более.. В чем может быть проблема? http://www.cyberforum.ru/cpp-beginners/thread750680.html
C++ Ошибка при компиляции: "Не удается найти указанный файл"
Всех С Новым Годом!!! При компиляции в VS 12 у меня выдает ошибку. Пробовал в VS 10 аналогично. Код #include <iostream> using namespace std;
Увеличение функциональности без использования наследования. Как? C++
Добрый день. Можно ли как-нибудь еще увеличить функциональность своего класса без использования наследования? Делаю свой класс А, в нем хочу реализовать несколько фич класса B. Сам я эти фичи написать не могу, т.к. не знаю, как они делаются, да и зачем изобретать велосипед. Ради каких-то нескольких функций наследовать класс B не хочу. Что можете посоветовать? Может хитрости какие есть? Знаю...
C++ Проблемы при вызове деструктора http://www.cyberforum.ru/cpp-beginners/thread750640.html
В процессе работы программы указатель на класс Dictionary,который является членом класса DictionaryManager,должен указывать на разные объекты класса Dictionary и вот когда мне нужно удалить память выделенную для старого объекта и выделить для нового,возникают проблемы Так я удаляю выделенную память // if(CurrentDict == NULL) CurrentDict = new Dictionary(ListOfFiles.at(choise - 1));...
C++ Присвоение адреса указателю, равному NULL В конструкторе класса я присваиваю адрес переменной укзаателю,который равен был инициализирован NULL Dictionary(string DictName) { CurrentDictionary = DictName; DataTree->CurrentDict = this;//изначально CurrentDict = NULL } в результате при создании нового объекта класса Dictionary вылетает ошибка неинициализированное исключение по адресу ... Быть может дело в том,что указатель... подробнее

Показать сообщение отдельно
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
01.01.2013, 14:49     Вылетает программа при удалении элемента вектора
Всех с новым годом, уважаемые киберфорумцы!
Сделал я на днях класс Button, который, как и положено, представляет из себя кнопку (работаю с библиотекой SDL). Класс примерно вот такой:
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
class Button
{
    private:
           SDL_Rect Box;
    SDL_Surface* Image[4]; //according ButtonState
    bool IsActive;
    int ButtonState; //0 - not active, 1 - active, 2 - mouse is over, 3 - pressed
    vector<Button*>::iterator ButtonNumberIter;
    static vector<Button*> Buttons;
 
    public:
           Button( int x, int y, int h, int w);
    ~Button();
 
    void SetImage (int state, string path);
    void SetImage (string path0, string path1, string path2, string path3);
 
           void HandleEvents();
 
           void Show();
    static void ShowButtons(); //Shows all buttons
 
    void SetActivity (bool);
};
Конструктор:
C++
1
2
3
4
5
6
7
8
9
Button::Button( int x, int y, int h, int w ): ButtonState (1), IsActive (1)
{
    Box.x = x;
    Box.y = y;
    Box.h = h;
    Box.w = w;
    Buttons.push_back (this);
    ButtonNumberIter = Buttons.end() - 1;
}
Деструктор:
C++
1
2
3
4
Button::~Button ()
{
    Buttons.erase (ButtonNumberIter);
}
Функция ShowButtons():
C++
1
2
3
4
5
void Button::ShowButtons()
{
    for (vector<Button*>::iterator iter = Buttons.begin(); iter < Buttons.end(); iter++)
        (*iter)->Show();
}
Функция main (оставлено только касающееся темы):
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
           Button* but = new Button (70, 400, 48, 480);
           but->SetImage (1, "MenuButton.png");
    but->SetImage (2, "MenuButton.png");
    but->SetImage (3, "MenuButton1.png");
 
    int gtimemy = 0;
    while (pr.Done == 0)
    {
    if( SDL_PollEvent( &(pr.Event) ) )
           {
            but->HandleEvents();
    }
        Button::ShowButtons();
        SDL_Flip (pr.PrSurface);
        gtimemy++;
        
        if (gtimemy == 25)
        {
            delete but;
        }
        
        if (gtimemy > 100)
        {
            pr.Done = 1;
        }
        Sleep (50);
     }
Непонятно почему программа вылетает после удаления кнопки -_-
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru