2013-12-06 5 views
0

Я заявляю, что являюсь новичком в C++. Это первый раз, когда я использую классы, и я думаю, что я сделал беспорядок с указателями. До сегодняшнего дня я всегда использовал структуру, но с частными членами я пошел с хэви.initialize Класс и список

Мне нужно создать:

class Army{ 
private: 
    WarriorEl* lista; 
    int lungh = 0; 
public: 
    Army(); 
    ....other methods..... 
}; 

class WarriorEl{ 
private: 
    Warrior war; 
    WarriorEl* pun; 
public: 
    WarriorEl(); 
    WarriorEl(int health, int mana, int index, float experience); 
    ....other methods..... 
}; 

class Warrior{ 
private: 
    int health; 
    int mana; 
    int index; 
    float experience; 
public: 
    Warrior(); 
    Warrior(int health, int mana, int index, float experience); 
    ....other methods..... 
}; 

В сборнике это хорошо, но когда я запускаю код он выходит из строя, когда переменные инициализируются.

главная: http://codepad.org/Hm5mhsJv

Army.h http://codepad.org/AHM0OTxQ

Army.cpp http://codepad.org/Uuql3Wud

WarriorEl.h http://codepad.org/o3Q1V3Gf

WarriorEl.cpp http://codepad.org/AumIpNdo

Warrior.h http://codepad.org/x52A66fF

Warrior.cpp http://codepad.org/F5QZxnH9

+0

Как он падает? Какая у вас ошибка? – nhgrif

+1

Первое, что очевидно: вы имеете дело с необработанными указателями, но не объявляете конструкторы копирования, деструкторы или операторы присваивания. Если вы собираетесь вручную управлять памятью с помощью необработанных указателей, это необходимо. Вы также не показываете реализацию конструкторов и инициализацию указателей; они могут быть инициализированы по умолчанию, что в C++ для необработанных указателей означает, что они имеют случайные неопределенные значения. (Нет, я не нажимал ссылки). –

+0

Ошибка: «Необработанное исключение в 0x00A32AE6 в AIV11_WarriorConClassi.exe: 0xC0000005: место записи нарушения доступа 0x00000010." @nathan, так что мне делать? Из того, что я понимаю, я должен написать конструктор для каждого класса, однако, я думал, что уже сделал это. –

ответ

1

Эта ошибка возникает при попытке записать в какой-то незанятое пространство.

Пожалуйста, проверьте петли и угловые шкафы, чтобы убедиться в отсутствии доступа к границам.