Witem,
Piszę niezbyt spomplikowaną grę, w której m.in mam dwie klasy. Klasę postac i klasę przedmiot obie w osobnych plikach.
W postac.h:
#pragma warning (disable:4996)
#ifndef POSTAC_H_
#define POSTAC_H_
//******************************************************************
#include <cstring>
#include "przedmiot.h"
struct postac
{
char imie[10];
int hp;
int wytrz;
int str;
int agi;
double obrazenia;
double obrona;
int lvl;
int exp;
int req_exp;
int pkt_nauki;
przedmiot amulet;
przedmiot lewa_reka;
przedmiot prawa_reka;
przedmiot zbroja;
postac(const char *namea, int hpa, int wytrza, int stra, int agia, int lvla, int expa, int pkt_naukia);
};
inline postac::postac(const char *namea, int hpa, int wytrza, int stra, int agia, int lvla, int expa, int pkt_naukia)
{ // <-tutaj znajduje sie linijka, o którą się czepia w błędach
strcpy(imie, namea ? namea : "");
hp = hpa;
wytrz = wytrza;
str = stra;
agi = agia;
lvl = lvla;
exp = expa;
pkt_nauki = pkt_naukia;
}
//******************************************************************
#endif
no i klase przedmiot w pliku przedmiot.h
#pragma warning (disable:4996)
#ifndef PRZEDMIOT_H_
#define PRZEDMIOT_H_
//******************************************************************
#include <cstring>
struct przedmiot
{
char nazwa[50];
int obrazenia;
int obrona;
int hp;
char przeznaczenie[15];
przedmiot(const char *opis, int obrazeniaa, int obronaa, int hpa, const char *przeznaczeniea);
};
inline przedmiot::przedmiot(const char *opis, int obrazeniaa, int obronaa, int hpa, const char *przeznaczeniea)
{
strcpy(nazwa,opis ? opis: "");
obrazenia = obrazeniaa;
obrona = obronaa;
hp = hpa;
strcpy(przeznaczenie, przeznaczeniea ? przeznaczeniea : "");
}
//******************************************************************
#endif
problem mam w tym, że w momencie kompliacji wywala mi takie błędy:
Error 1 error C2512: 'przedmiot' : no appropriate default constructor available c:\users\mateusz\desktop\gra\gra\postac.h 27 1
Error 3 error C2512: 'przedmiot' : no appropriate default constructor available c:\users\mateusz\desktop\gra\gra\postac.h 27 1
Error 4 error C2512: 'przedmiot' : no appropriate default constructor available c:\users\mateusz\desktop\gra\gra\postac.h 27 1
6 IntelliSense: no default constructor exists for class "przedmiot" c:\Users\Mateusz\Desktop\gra\gra\postac.h 27 1
Co więcej napisałem funkcję, która ma być odpowiedzialna za zmianę przedmiotu z tych, które postać posiada na te, które gdzieś sobie znajdzie:
void wez_przedm(przedmiot &skad, postac &bohater)
{
if (skad.przeznaczenie == "amulet")
{
przedmiot temp = bohater.amulet;
bohater.amulet = skad;
skad = temp;
}
else if (skad.przeznaczenie == "zbroja")
{
przedmiot temp = bohater.zbroja;
bohater.zbroja = skad;
skad = temp;
}
else if (skad.przeznaczenie == "lewa reka")
{
przedmiot temp = bohater.lewa_reka;
bohater.lewa_reka = skad;
skad = temp;
}
else if (skad.przeznaczenie == "prawa reka")
{
przedmiot temp = bohater.prawa_reka;
bohater.prawa_reka = skad;
skad = temp;
}
else if (skad.przeznaczenie == "dwureczny")
{
przedmiot temp = bohater.prawa_reka;
przedmiot temp2 = bohater.lewa_reka;
bohater.prawa_reka = skad;
skad = temp;
//bohater.lewa_reka = zajete;
}
}
```cpp
Pytanie, czy powinienem umieścić ją w przedmiot.cpp czy postac.cpp.
Z góry dzięki za pomoc, pzdr.