在彼此之间链接类的标题时出错

时间:2019-07-18 00:01:17

标签: visual-c++ visual-studio-2017

嗨,我在学校有任务要解决。我得到的代码全都放在一个文件中。我坚持使用第一个,那就是为每个类创建头文件和.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的含义,但是如果删除它,则会出现类似重新定义的错误。因此,如果有人有某种解决方案,我将不胜感激。 :)

0 个答案:

没有答案