Autor Wątek: C++ Problem ze stworzeniem ekwipunku.  (Przeczytany 22429 razy)

Offline Estivo

  • Użytkownik
    • Blog

# Maj 09, 2014, 19:30:10
Xirdus jeżeli OP chciałby sie nauczyć to sam by szukał w Google co te błędy oznaczają. Jeżeli ktoś nie wykazuje ani grama chęci do nauki, tylko odbębnić kod to ja mu to ułatwię i skrócę mękę i nam i jemu.

Tak się zmniejsza konkurencję na rynku pracy ;)

Poza tym myślę, że
Cytuj
A ja wiem ;) Chodzi o to, że bezmyślnie mój kod skopiowałeś. nie masz kontruktora, który nie przyjmuje parametrów (stąd provided 0, a expects 6 bo masz CPrzedmiot(std::string, int, int, int, int, int) a użyłeś CPrzedmiot() )

I:\Programowanie\Nevermore\Nevermore v.0.0.7\bazaPrzedmiotów.cpp:21:44: error: no matching function for call to 'CPrzedmiot::CPrzedmiot()'
I:\Programowanie\Nevermore\Nevermore v.0.0.7\bazaPrzedmiotów.cpp:21:44: note: candidates are:
In file included from I:\Programowanie\Nevermore\Nevermore v.0.0.7\bazaPrzedmiotów.hpp:4:0,
                 from I:\Programowanie\Nevermore\Nevermore v.0.0.7\bazaPrzedmiotów.cpp:1:
I:\Programowanie\Nevermore\Nevermore v.0.0.7\Przedmiot.hpp:14:10: note: CPrzedmiot::CPrzedmiot(std::string, int, int, int, int, int)

Rozwiązanie zagadki, dlaczego się krzaczy.

Było dobitną wskazówką co jest złe. OP znalazł linijkę z błędnym kodem, ale już nie wiedział co z nim zrobić. Zamiast samemu postarać się to rozwiązać z automatu klepał na forum a mógł ten czas poświecić na samokształcenie sie ;) Nie moja wina, że to on nie chce się nauczyć.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline ArekBal

  • Użytkownik

# Maj 09, 2014, 20:24:40
Nie wspominając że jak patrze na obydwa kawałki kodu(i jego i ta twoja podpowiedź) to zaczyna mnie boleć głowa. :P
« Ostatnia zmiana: Maj 09, 2014, 23:36:25 wysłana przez ArekBal »

Offline Acarin1995

  • Użytkownik

# Maj 11, 2014, 22:25:53
Mam kolejne pytanie względem poniższego kodu:
//Postac.hpp
#ifndef Postac_hpp
#define Postac_hpp
#include "Istota.hpp"
#include "Przedmiot.hpp"
class CPostac : public Istota
{
        public:
        CPostac();
        int sila;
        int wytrzymalosc;
        int zrecznosc;
        bool plec;
        string nazwaPlci;
        //Rozgrywka
        int nowaGra();
        int wczytajGre();
        int zapiszGre();
        //Ekwipunek
        vector <CPrzedmiot*> plecak;
        vector <CPrzedmiot*> zbiorPrzedmiotow;
        CPrzedmiot *p_bron;
    CPrzedmiot *p_napiersnik;
    CPrzedmiot *p_helm;
    CPrzedmiot *p_spodnie;
    CPrzedmiot *p_dlonie;
    CPrzedmiot *p_stopy;
    int wczytajPrzedmioty();
    int zapchajEkwipunek();
        int wyswietlEkwipunek();
        int wyrzucPrzedmiot();
        int zalozPrzedmiot();
        int t_wytrzymalosc();

};


#endif


int CPostac::zapchajEkwipunek()
{
        cout<<zbiorPrzedmiotow[1]->nazwa<<endl;
p_bron = zbiorPrzedmiotow[0];
p_helm = zbiorPrzedmiotow[2];
p_napiersnik = zbiorPrzedmiotow[3];
p_spodnie = zbiorPrzedmiotow[4];
p_dlonie = zbiorPrzedmiotow[5];
p_stopy = zbiorPrzedmiotow[6];
}

Po wczytaniu przedmiotów przez metode CPostac::wczytajPrzedmioty(); Chciałem podstawić podstawowe eq. Lecz po kompilacji program się zawiesza czy ktoś mógłby mi pomóc?

Offline Acarin1995

  • Użytkownik

# Maj 30, 2014, 14:49:06
Wyciąłem odpowiednie fragmenty kodu, myśląc że to wina innych linijek. Po czym uprościłem kod lecz i to nie przyniosło odpowiednich skutków poniżej zamieszczam kod:
//main.cpp
#include "main.hpp"
#include "Character.hpp"
int main()
{
    CCharacter Player;
    CItem Items("",0,0,0);
    Items.loadItems();
    Player.equipItems();
    cout<<Player.p_rightHand->name;
    return 0;
}
//main.hpp
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
//Character.hpp
#ifndef Character_hpp
#define Character_hpp
#include "Item.hpp"
class CCharacter
{
    public:
        string name;
        int attackMin;
        int attackMax;
        int defence;
        vector <CItem*> backPack;
        CItem *p_rightHand;
        int equipItems();

};
#endif
//Character.cpp
#include "Character.hpp"
CCharacter::equipItems()
{
    p_rightHand = CItem.AllItems[1];
}
//Item.hpp
#ifndef Item_hpp
#define Item_hpp
#include "main.hpp"
class CItem
{
    public:
        string name;
        int atackMin;
        int atackMax;
        int defence;
        vector <CItem*> AllItems;
        CItem(string name, int atackMin, int atackMax, int defence);
        int loadItems();

};
#endif
//Item.cpp
#include "Item.hpp"
CItem::CItem( string name_, int atackMin_, int atackMax_, int defence_ )
{
    name = name_;
    atackMin = atackMin_;
    atackMax = atackMax_;
    defence = defence_;
}
int CItem::loadItems()
{
    fstream itemBase;
    itemBase.open( "items.txt", ios::in );
     for( int i = 0; i < 5; ++i )
    {
        itemBase >> name >> atackMin >> atackMax >> defence;
        AllItems.push_back(new CItem(name, atackMin,atackMax,defence));
    }
     for( int i = 0; i < 5; ++i )
    {
        cout<<AllItems[i]->name<<endl;
    }
}

Gdy próbuje użyć tego kodu:
    //character.cpp
#include "Character.hpp"
int CCharacter::equipItems()
{
    CItem Item("",0,0,0);
    p_rightHand = CItem.AllItems[1];
}
//items.txt

Sword 1 3 0
Dagger 2 2 0
Shield 0 0 1
Shirt 0 0 2
Helmet 0 0 1
Program się kompiluje lecz przestaje działać