[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();
    }
    

Anmelden zum Antworten