Unerklärlich - Objekt wird nicht übergeben?



  • Hey!
    Folgendes:

    std::cout << player.getHealth() << std::endl;
    	player.getInventory().useItem(*items[0], player);
    	std::cout << player.getHealth() << std::endl;
    

    Nach useItem() sollte health eigentlich 150 sein, bleibt aber bei 50, warum?

    Inventory:

    void Inventory::useItem(Items &item, Entities &entity)
    {
    	item.use(entity);
    }
    

    Items:

    bool Potion::use(Entities &entity)
    {
    	entity.addHealth(100);
             std::cout << "getrunken" << std::endl;
    	return true;
    }
    

    Entities:

    void Player::addHealth(short value)
    {
    	health += value;
    }
    

    Ich komm einfach nicht dahinter, aber entity.addHealth(100); wird 100% ausgeführt, die Ausgabe ist:

    50
    getrunken
    50

    Dabei übergebe ich das einzigartige Objekt von Player...



  • Mit 85% Sicherheit würde ich auf folgendes tippen:

    Entitiy::addHealth(short) ist nicht virtual.



  • Anfängerfehler.

    Vielen vielen Dank :p


Anmelden zum Antworten