Program wywala błąd podczas proby załadowania funkcji.

0
void backpack::show_slot(int a)
{
slot[a]->print_all();
}

oto nieszczesna funkcja na pewno slot 0 i slot 1 sa zajete sprawdzam to w mainie inna funkcja;
oto funkcja print all

void bow::print_all()
{
    cout<<endl;
    set_color(5);
    cout<<name;
    set_color(4);
    cout<<endl;
    cout<<"---------------------------------------------\n";
    set_color(2);
    cout<<bow_attack<<endl;
    cout<<weight<<endl;
    cout<<value<<endl;
    cout<<description<<endl;
    set_color(4);
    cout<<"---------------------------------------------\n";
    set_color(7);
}


takią fukcją dodaje przedmiot

void backpack::item_add(item &stuff)

{
item *wskaznik;
wskaznik = &stuff;

    for(int i=0; i<100; i++)
    {


        if(slot[i]!=NULL)
            i=i;
        else
        {
            if(wskaznik->get_weight()+current_weight>max_weight)
            {


                print_text_delay("\nNie dam rady tyle podniesc",30);
                return void();
            }
                else
                {
                    slot[i]=&stuff;
                    current_weight=current_weight+wskaznik->get_weight();
                    print_text_delay("\n*Przedmiot dodany do ekwipunku*\n",30);

                    return void();
                }

        }

    }
    cout<<"\nERROR_NOT_ENOUGHT_SLOTS\n";
}

a to zawartosc maina

#include <iostream>
#include "ekwipunek.h"

using namespace std;

 main()
{

sword mieczyk;
backpack krystian;

krystian.item_add(mieczyk);
mieczyk.print_all();



cout<<krystian.item_check(mieczyk);
krystian.item_remove(mieczyk);
cout<<krystian.item_check(mieczyk);
bow luczek;
krystian.item_add(luczek);
krystian.item_add(mieczyk);

cout<<krystian.item_check(luczek);
cout<<krystian.item_check(mieczyk);
krystian.show_slot(1);

}

po skompilowaniu taki efekt

screenshot-20170108224717.png

0

Pytanie, czy debuggerem wchodzisz w print_all ?

0

Cały ten kod to ciężki WTF. Może jednak nauczysz się trochę programować a potem weźmiesz za pisanie gier? Szczególnie w C++ ;]
Zamiast po ludzku używać jakiegoś vector to kombinujesz z tablicami wskaźników, do których jeszcze wrzucasz adresy lokalnych obiektów. To sie dobrze nie skończy. O kwiatkach w stylu

        if(slot[i]!=NULL)
            i=i;

albo

return void();

to nawet nie mówie bo szkoda słów.

Obstawiam ze błąd w ogóle nie jest w kodzie który pokazałeś tylko w kodzie którego nie raczyłeś pokazać. Zamiast kombinować i wróżyć z kuli to postaw breakpoint na początku main() a następnie idź sobie krok po kroku przez kod i zobacz co się rzeczywiście wywala.

1 użytkowników online, w tym zalogowanych: 0, gości: 1