У меня сейчас много кода, который сводит меня с ума.
Я работаю с OpenGL, создавая структуру GUI, которая использует несколько различных типов объектов. У меня есть классы изображений, которые загружают файлы * .png и хранят информацию об изображениях в виде ссылки на текстуру GLuint. У меня есть классы Panel и Button с указателями на классы изображений, которые они должны отображать. У меня есть класс Hud с std :: векторы указателей Panel и Button. Наконец, у меня есть класс Engine, который содержит один класс Hud, все мои классы Button и Panel и указатели на изображения. Когда конструктор запущен, каждый из указателей Image инициализируется с помощью:
imgMy = new Image;
Как только все изображения были инициализированы, я запускаю свои функции загрузки:
imgMy->loadImage("imgMy.png");
Конечно, я удаляю изображения, когда закрываю программу.
Моя проблема в том, что некоторые изображения "пересекаются". У меня сейчас около тридцати изображений, и пара кнопок, очевидно, указывают на неправильные изображения. Я тщательно проверил свой код, и он кажется надежным. Я считаю, что это ошибка памяти, так как кнопки, которые отображают неправильные изображения, несовместимы. Иногда они отображают правильные изображения, иногда разные кнопки отображают неправильные изображения. Я бы хотел показать свой код здесь, но он довольно массивный.
Причина, по которой я использую указатели Image в своем классе Engine вместо реальных объектов Image, заключается в том, что я боюсь, что кнопки указывают на недопустимую память, если размер класса Engine изменяется или его память переупорядочивается. Я подозреваю, что есть гораздо лучший подход к тому, чего я пытаюсь достичь, и я был бы признателен за любые советы в этом направлении.