Acarin1995 Temat założony przez niniejszego użytkownika |
[C++] Problem z zapisaniem zmiennych po pliku. » 2014-02-27 16:01:36 Witam potrzebuje pomocy... Funkcja zapsu do pliku danych dziala bez problemu ale odczytu nie... Ktos wie jak odczytac zmienne tekstowe i liczbowe na podstawie ponizszego kodu: int CPostac::zapiszGre() { fstream zapisGry; zapisGry.open( "save.txt", ios::out ); zapisGry << p_bron->nazwa << " " << p_bron->atakMin << " " << p_bron->atakMax << " " << p_bron->wartosc << " " << p_helm->nazwa << " " << p_helm->punktyPancerza << " " << p_helm->typ << " " << p_helm->wartosc << " " << p_napiersnik->nazwa << " " << p_napiersnik->punktyPancerza << " " << p_napiersnik->typ << " " << p_napiersnik->wartosc; zapisGry.close(); } int CPostac::wczytajGre() { fstream zapisGry; zapisGry.open( "save.txt", ios::in ); zapisGry >> p_bron->nazwa >> " " >> p_bron->atakMin >> " " >> p_bron->atakMax >> " " >> p_bron->wartosc >> " " >> p_helm->nazwa >> " " >> p_helm->punktyPancerza >> " " >> p_helm->typ >> " " >> p_helm->wartosc >> " " >> p_napiersnik->nazwa >> " " >> p_napiersnik->punktyPancerza >> " " >> p_napiersnik->typ >> " " >> p_napiersnik->wartosc; zapisGry.close(); }
|
|
Monika90 |
» 2014-02-27 16:25:32 Po prostu usuń te " " z funkcji odczytującej i powinno działać.
Z tym że, jeżeli nazwy zawierają spacje to będziesz musiał coś z tym zrobić. |
|
Acarin1995 Temat założony przez niniejszego użytkownika |
[c++] problem Vector a podklasa » 2014-02-27 17:25:54 Dzięki działa... mam trzy klasy Przedmiot jest klasa glowna, Bron dziedziczy z klasy przedmiot, tak samo pancerz. Jak zrobic by przy wskazywaniu np. na obiekt pancerz z vectora vector < Przedmiot *> plecak; Nie wyskakiwal blad typu: [Error] invalid conversion from 'CPrzedmiot*' to 'CBron*' [-fpermissive]'. Wskaźnik wygląda tak CBron * p_bron; A wskazanie tak ... Błąd się pojawił gdy zacząłem używać kontenera vector. |
|
PsichiX |
» 2014-02-27 18:45:19 rzutuj na typ docelowy. |
|
Acarin1995 Temat założony przez niniejszego użytkownika |
» 2014-02-27 20:23:29 Witam to znowu ja... Mam teraz problem z odczytem apka. się kompiluje gra zapisuje lecz przy wczytaniu sie zawiesza i wyłącza kod poniżej: int CPostac::zapiszGre() { fstream zapisGry; zapisGry.open( "save.txt", ios::out ); zapisGry << p_bron->nazwa << " " << p_bron->atakMin << " " << p_bron->atakMax << " " << p_bron->wartosc << " " << p_helm->nazwa << " " << p_helm->punktyPancerza << " " << p_helm->typ << " " << p_helm->wartosc << " " << p_napiersnik->nazwa << " " << p_napiersnik->punktyPancerza << " " << p_napiersnik->typ << " " << p_napiersnik->wartosc << " " << p_spodnie->nazwa << " " << p_spodnie->punktyPancerza << " " << p_spodnie->punktyPancerza << " " << p_spodnie->wartosc << " " << nazwa << " " << nazwaPlci << " " << atakMin << " " << atakMax << " " << zycie << " " << zycieMax << " " << moneta << " " << sila << " " << wytrzymalosc << " " << zrecznosc << " " << szansaNaTrafienieKrytyczne << " " << silaTrafieniaKrytycznego << " " << p_pancerz << " " << doswiadczenie; zapisGry.close(); } int CPostac::wczytajGre() { fstream zapisGry; zapisGry.open( "save.txt", ios::in ); zapisGry >> p_bron->nazwa >> p_bron->atakMin >> p_bron->atakMax >> p_bron->wartosc >> p_helm->nazwa >> p_helm->punktyPancerza >> p_helm->typ >> p_helm->wartosc >> p_napiersnik->nazwa >> p_napiersnik->punktyPancerza >> p_napiersnik->typ >> p_napiersnik->wartosc >> p_spodnie->nazwa >> p_spodnie->punktyPancerza >> p_spodnie->punktyPancerza >> p_spodnie->wartosc >> nazwa >> nazwaPlci >> atakMin >> atakMax >> zycie >> zycieMax >> moneta >> sila >> wytrzymalosc >> zrecznosc >> szansaNaTrafienieKrytyczne >> silaTrafieniaKrytycznego >> p_pancerz >> doswiadczenie; zapisGry.close();
|
|
Monika90 |
» 2014-02-28 17:50:06 Z tego co podałeś niewiele wynika. Jakie są typy tych wszystkich zmiennych p_bron, p_bron->nazwa, p_helm, itp? Jakie są ich wartości? Może masz gdzieś niezainicjalizowany wskaźnik? |
|
Acarin1995 Temat założony przez niniejszego użytkownika |
» 2014-02-28 18:24:53 class CPostac : public Istota { public: CPostac(); int sila; int wytrzymalosc; int zrecznosc; bool plec; string nazwaPlci; int nowaGra(); int wczytajGre(); int zapiszGre(); vector < CPrzedmiot *> plecak; CPrzedmiot * p_bron; CPrzedmiot * p_napiersnik; CPrzedmiot * p_helm; CPrzedmiot * p_spodnie; int zapchajEkwipunek(); int wyswietlEkwipunek(); int wyrzucPrzedmiot(); int zalozPrzedmiot(); int t_wytrzymalosc(); };
class CPrzedmiot { public: string nazwa; int atakMin; int atakMax; int punktyPancerza; int typ; int wartosc; };
class CBron : public CPrzedmiot { public: CBron( string nazwa, int atakMin, int atakMax, int typ_, int wartosc ); }
class CPancerz : public CPrzedmiot { public: CPancerz( string nazwa, int punktyPancerza, int typ, int wartosc ); };
Coś jeszcze? |
|
WaxerPL |
» 2014-02-28 21:09:45 Skoro np. Klasa CBron dziedziczy publicznie po klasie CPrzedmiot oznacza że, ma wszystkie jej atrybuty i metody. Tworząc klasę Istota nie używaj wskaźników na CPrzedmiot, lecz użyj na Broń czy inny "sprzęt".
Zamiast: CPrzedmiot * p_bron; Użyj: CBron * p_bron;
Analogicznie z pozostałym ekwipunkiem.
Wektor: vector < CPrzedmiot *> plecak; Rozumiem że w nim będziesz "przechowywał" ekwipunek?
POZA TYM:
W klasie CPrzedmiot masz 6 atrybutów: string nazwa; int atakMin; int atakMax; int punktyPancerza; int typ; int wartosc;
Natomiast gdy wywołujesz konstruktor CPrzedmiot klasą np. CBroń, nie wywołujesz atrybutu punkty pancerza, co może powodować błędy, ponieważ wszystkie zadeklarowane atrybuty powinny być użyte. Tak samo jest w klasie CPancerz, nie używasz atrybutów atakMax, atakMin.
Lepiej będzie gdy zrobisz: class CPrzedmiot { public: string nazwa; int typ; int wartosc; }
class CPancerz : public CPrzedmiot { public: int punktyPancerza;
CPancerz(string nazwa, int punktyPancerza, int typ, int wartosc) } class CBron : public CPrzedmiot { int atakMax; int atakMin; CBron( string nazwa, int atakMin, int atakMax, int typ_, int wartosc ); }
I jeszcze jedno klasa CBron powinna mieć nawias zakończony średnikiem. Ponieważ ty "wpisaleś" klasę CPancerz w klase CBron.
|
|
« 1 » 2 |