Этот код похож на пару сообщений уже здесь, однако у меня есть уникальная проблема. Связанный список вызывает исключение при попытке вставить объект. Должно быть 5 игроков, каждый из которых имеет различное количество оружия, каждое оружие имеет разное количество раундов. Я в недоумении. Пожалуйста помоги!LinkedList вызывает исключение, но не уверен, почему?
LinkedList.h
template <class T>
class LinkedList {
public:
T *first;
LinkedList();
~LinkedList();
inline bool IsEmpty();
inline void Insert(T *);
void Display()const;
T *Find(const int key)const;
T *Delete();
T *Delete(const int key);
};
template <class T>
LinkedList<T>::LinkedList(){
first = 0;
}
template <class T>
LinkedList<T>::~LinkedList(){
}
template <class T>
bool LinkedList<T>::IsEmpty(){
return (first == 0);
}
template <class T>
void LinkedList<T>::Insert(T * newLink){
newLink->next = first; //exception break highlights here
first = newLink;
}
template <class T>
void LinkedList<T>::Display()const {
T *current = first;
while (current != 0) {
current->Display();
current = current->next;
}
}
template <class T>
T *LinkedList<T>::Find(const int key)const {
T *current = first;
while (current->data != key){
if (current->next == 0)
return 0;
else
current = current->next;
}
return current;
}
template <class T>
T *LinkedList<T>::Delete() {
T *temp = first;
first = first->next;
return temp;
}
Player.h
class Player:public GameObject
{
public:
Player* leftChild;
Player* rightChild;
LinkedList<Weapon>* weapons;
Player();
~Player();
void Display();
bool operator != (const Player&);
bool operator <(const Player&);
};
Player.cpp
Player::Player()
{
leftChild = 0;
rightChild = 0;
}
Player::~Player()
{
}
void Player::Display()
{
}
bool Player::operator<(const Player& player)
{
if (this->instances < player.instances)
{
return true;
}
else
{
return false;
}
}
bool Player::operator!=(const Player& player)
{
if (instances == NULL)
{
return false;
}
else
{
return true;
}
}
main.cpp
int main()
{
Player *players[4];
players[0] = new Player();
players[1] = new Player();
players[2] = new Player();
players[3] = new Player();
players[4] = new Player();
players[0]->weapons->Insert(new Weapon(1));
}
Надеюсь, я включил все. Я понятия не имею, что я сделал не так, или куда идти отсюда.
Что означает «оружие» в новом «Player»? (Последующий вопрос: почему это указатель?) – molbdnilo
какое исключение? –
«Надеюсь, я включил все». На самом деле вы включили слишком много. Я уверен, что 90% кода не относится к исключению. С другой стороны, вы включили слишком мало, потому что вы не говорите нам, что является исключением. – user463035818