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

Пустые указатели (ошибка доступа) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Можно ли инициализировать динамический массив не используя цикл? http://www.cyberforum.ru/cpp-beginners/thread1240169.html
Когда создавали статический массив, можно было сделать так: int array={1,5,14,23,32,45,67}; Можно ли такое же сделать с динамическим массивом? Со строками получается, а с произвольным массивом выдает ошибки.
C++ Непонятные ошибки линковщика В общем пытаюсь прикрутить работу с пост запросами но появляются ошибки не могу понять как всё это исправить http://www.cyberforum.ru/cpp-beginners/thread1240148.html
C++ Как сделать, так, чтобы ряд действий в программе выполнялся до тех пор, пока пользователь не нажмёт на крестик
Как сделать, так, чтобы ряд действий в программе выполнялся до тех пор, пока пользователь не нажмёт на крестик? Я работаю в программе Microsoft Visual Studio Ultimate 2012. Моя операционная система Windows 7. Вот код программы: #include <iostream> int main() { double a=0, b=0, c=0, d=0; do { std::cout << " Enter the width of the picture "; std::cin >> a;
Геттер/Сеттер для классового типа C++
Добрый день. Не могу разобраться как правильно сделать Геттер/сеттер вот для такого поля : В .h class SomeClassName { private : SomeClassName *pointer = NULL; public:
C++ Как изменить интерфейс программы? http://www.cyberforum.ru/cpp-beginners/thread1240136.html
Я новичок в С++, и мне не нравится, что окно котрое открывается после запуска программы, чёрное! Как изменить дизайн, интерфейс программы?
C++ Как указать издателя в приложении Когда я запускаю свою программу в С++ на компьютере на котором Windows 8, мне выдаёт, что "Система Windows защитил ваш компьютер". Когда я нажимаю "Подробнее" Мне выдаёт, что у программы неизвестный издатель! Как мне это изменить? Как указать издателя? подробнее

Показать сообщение отдельно
Progers
New to C++
 Аватар для Progers
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
08.08.2014, 21:44     Пустые указатели (ошибка доступа)
Здравствуйте, пишу простенький фрамеворк для загрузки текстур для того чтобы добавить эти текстуры в игру.
Существует Класс Load -> Наследник Texture
-> Наследник Font
Класс GameOBJ - для игровых обьектов
Класс Game - для самой игры, инициализация всяких систем и так далее.
Я использую библиотеку SDL2 в Visual Studio 2013
Так вот, в Классе Texture есть метод
C++
1
static Texture* Instance()
который возвращает
C++
1
new Texture
И обьявление
C++
1
Static Texture* ThisInstance
и в Texture.cpp он обьявлен как
C++
1
Texture* Texture::ThisInstance = nullptr
Реализация такова:
C++
1
2
3
4
5
6
7
8
9
Texture* Texture::Instance()
{
    if (Texture_Instance = nullptr)
    {
        Texture_Instance = new Texture;
        return Texture_Instance;
    }
    return Texture_Instance;
}
Тоже самое в GameOBJ только там вместо Texture стоит GameOBJ

Так вот, из класса Game я вызываю:
C++
1
2
3
4
void Game::PushGameObj()
{
    GameOBJ::Instance()->Push_Objects("test.png","test");
}
Который в свою очередь идёт в:
C++
1
2
3
4
5
void GameOBJ::Push_Objects(std::string Texture_P,std::string ID)
{
    Texture::Instance()->LoadSurface(Texture_P);
    Texture::Instance()->PushTexture(ID);
}
И который идёт в:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool Texture::LoadSurface(std::string Path)
{
    Texture_Surface = IMG_Load(Path.c_str());
    if (Texture_Surface == nullptr)
    {
        std::cerr << "Could not create surface because of Img_GetError =  " << IMG_GetError << std::endl;
        Success = false;
    }
    else
    {
        std::cout << "Success Creating Surface " << std::endl;
        Success = true;
    }
    return Success;
}
И в
C++
1
2
3
4
5
6
void Texture::PushTexture(std::string ID)
{
    Load::PushTexture(ID, Texture_Surface);
    SDL_FreeSurface(Texture_Surface);
    Texture_Surface = nullptr;
}
Проблема возможно или в
C++
1
SDL_Surface* Texture_Surface = nullptr;
Это находится в Texture.h в Private
Или в чём то другом.
Так вот вопрос, когда он заходит в метод LoadSurface и доходит до значения
C++
1
 Texture_Surface = IMG_Load(Path.c_str());
Появляется ошибка доступа, и This показывает NULL. В чём может заключатся проблема?
Миниатюры
Пустые указатели (ошибка доступа)   Пустые указатели (ошибка доступа)  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru