[GELÖST -.-] Kritischer Fehler - Was stimmt nicht?
-
//EDIT:
Habs nach 30 Minuten suchen und herumprobieren endlich korrigiert:Es muss heißen:
Inventory::Inventory() { slots = new Slot*[5]; }und nicht
Inventory::Inventory() { Slot** slots = new Slot*[5]; }
Mit inventory.addItem(); wird der Zeiger "bla" vom Typ "Potion" erstellt, und dann einem Slot zugewiesen.
Beim Zuweisen bricht das Programm jedoch kritisch ab, warum?Offset: 000012cb
Items.h
#ifndef _ITEMS_H_ #define _ITEMS_H_ //***INCLUDES***// //***CLASS Slot***// class Slot { public: virtual void use() = 0; }; class Potion : public Slot { public: void use(); }; #endif _ITEMS_H_Items.cpp
//***INCLUDES***// #include "Items.h" //***ITEM CLASSES***// void Potion::use() { ; }Inventory.h
#ifndef _INVENTORY_H_ #define _INVENTORY_H_ //***INCLUDES***// #include "Items.h" //***CLASS Inventory***// class Inventory { public: Inventory(); ~Inventory(); void addItem(); Slot** slots; }; extern Inventory inventory; #endif _INVENTORY_H_Inventory.cpp
//***INCLUDES***// #include "Inventory.h" //***GLOBAL***// Inventory inventory; //***CLASS Inventory***// Inventory::Inventory() { Slot** slots = new Slot*[5]; } Inventory::~Inventory() { delete slots; } void Inventory::addItem() { Potion* bla = new Potion; slots[1] = bla; }main.cpp
#include "Inventory.h" void main() { inventory.addItem(); }