2014-12-17 2 views
-4

Привет, я не так давно начал программирование на C++, но имел несколько лет опыта работы на других языках. На данный момент я работаю над базовой игрой, в которой игрок будет сражаться с монстрами против монстров AI в финальной игре в стиле фэнтези.Проблема с указателями

класс чемпионов наследуется от класса AbstractMonster, и я хочу, чтобы игрок мог выбрать своего начального монстра из выделения. Однако на данный момент у меня есть только тот, который запрограммирован так, как будто я могу заставить это работать, я должен быть в состоянии получить остальное

Проблема, с которой я столкнулся, - это указатель на монстра игрока, поскольку он продолжает поднимать , Место записи нарушения доступа 0x00000000.

Это только части файла заголовка, который я использую в настоящее время

#include "AbstractMonster.h" 
#include "Champion.h" 

class mainGame{ 
public: 
    void createMonster() 
private:  
    AbstractMonster* playerMonster = nullptr; 
} 

Функция в файле .cpp является следующая

void mainGame::createMonster(){  
    playerMonster = new Champion(); //this is the line the errors at and it highlights playerMonster 
} 

любая помощь будет намного оценил, поскольку у меня была эта проблема в течение пары дней.

+0

Итак, где вы выделяете память при вводе! = 1? – Leeor

+2

Недостаточно кода для определения проблемы. – IdeaHat

+0

У вас, вероятно, есть нулевой указатель где-то, то есть указатель, который не указывает на объект, что может произойти, когда ваш ввод выше не равен 1. –

ответ

1

Access violation writing location 0x00000000. Сообщает, что вы получаете доступ к указателю, который никогда не был назначен объекту new. Я бы проверил места, где вы используете playerMonster, и убедитесь, что он действителен. Хороший способ проверить это, когда вы кулак объявить playerMonster установить его равным nullptr

AbstractMonster* playerMonster = nullptr; 

Затем в местах, которые вы используете его запустить проверку, чтобы увидеть, если его еще нулевой if (plasyerMonster == nullptr).

+0

не повезло с нулевым ptr –

+0

@FraserS Включить разрыв в нарушениях доступа в вашем отладчике. Затем, когда он перестает возвращать стоп-код, чтобы увидеть строку кода в вашей программе, которая вызывает нарушение доступа. – drescherjm

+0

havn't повезло с добавлением nullptr. hadnt включил достаточную информацию –

Смежные вопросы