嗨,我在学校有任务要解决。我得到的代码全都放在一个文件中。我坚持使用第一个,那就是为每个类创建头文件和.cpp文件。我已经管理好了,但是VS抛出一个错误,那就是LNK2005。我知道是什么原因造成的,但我不知道如何解决。我将放置代码,以便您可以查看
Smjestaj.h #pragma一次
enum TipSmjestaja { StudioApartman, SingleRoom, DoubleRoom, SuperiorApartman };
const char* TipSmjestajaString[] = { "StudioApartman", "SingleRoom", "DoubleRoom", "SuperiorApartman" };
class Smjestaj
{
int _broj; //Broj sobe, apartmana
TipSmjestaja* _tipSmjestaja;
int _maxBrojOsoba;
double _cijenaPoOsobi;
public:
Smjestaj();
Smjestaj(int, TipSmjestaja, int, double);
~Smjestaj();
void Info()const;
};
Hotel.h
#pragma once
#include"Rezervacije.h"
class Hotel
{
char* _naziv;
//Ponuda smještaja
Smjestaj* _smjestaji;
int _brojSmjestaja;
//Rezervacije hotela (protekle, aktivne i nadolazeće)
Rezervacija* _rezervacije;
int _brojRezervacija;
static int _stopaPDV;
public:
Hotel(const char* naziv);
void DodajSmjestaj(Smjestaj& smjestaj);
};
Rezervacije.h
#pragma once
#include "Datum.h"
#include "Gost.h"
#include "Smjestaj.h"
#include "Usluga.h"
enum StatusRezervacije { Aktivna, Potvrdjena, BoravakUToku, Otkazana };
class Rezervacija
{
Datum _pocetakBoravka;
Datum _krajBoravka;
Gost* _gost; //Gost koji je rezervisao smještaj
Smjestaj _smjestaj;
int _brojOsoba; //Ukupan broj osoba koji boravi u smjestaju
Usluga* _usluge; //Dodatne usluge koje je gost koristio tokom boravka
int _brojUsluga;
double _ukupanIznos;
StatusRezervacije _status;
public:
Rezervacija(const Datum&, const Datum&, Gost, int);
~Rezervacija();
void RezervisiUslugu(const Usluga& u);
};
我得到的确切错误是这个:
Severity Code Description Project File Line Suppression State
Error LNK2005 "char const * * TipSmjestajaString" (?TipSmjestajaString@@3PAPBDA) already defined in Hotel.obj KonstruktorKopije_Vjezbe C:\Users\Dzevad\source\repos\KonstruktorKopije_Vjezbe\KonstruktorKopije_Vjezbe\Rezervacije.obj 1
Error LNK2005 "char const * * TipSmjestajaString" (?TipSmjestajaString@@3PAPBDA) already defined in Hotel.obj KonstruktorKopije_Vjezbe C:\Users\Dzevad\source\repos\KonstruktorKopije_Vjezbe\KonstruktorKopije_Vjezbe\Smjestaj.obj 1
Error LNK2005 "char const * * TipSmjestajaString" (?TipSmjestajaString@@3PAPBDA) already defined in Hotel.obj KonstruktorKopije_Vjezbe C:\Users\Dzevad\source\repos\KonstruktorKopije_Vjezbe\KonstruktorKopije_Vjezbe\Source.obj 1
Error LNK2005 "char * __cdecl AlocirajNizKaraktera(char const *)" (?AlocirajNizKaraktera@@YAPADPBD@Z) already defined in Gost.obj KonstruktorKopije_Vjezbe C:\Users\Dzevad\source\repos\KonstruktorKopije_Vjezbe\KonstruktorKopije_Vjezbe\Usluga.obj 1
我不熟悉使用文件并将它们链接在一起。我知道#pragma once
的含义,但是如果删除它,则会出现类似重新定义的错误。因此,如果有人有某种解决方案,我将不胜感激。 :)