为什么我的c ++单例在Clion上不起作用?

时间:2019-06-11 16:52:29

标签: c++ singleton

我想在我的项目中有一个单身人士,但是会发生一些错误

这是我在三个单独文件中的代码。

//---------------My main.cpp code

#include <iostream>
#include "Sports/BBVB.h"


int main() {
    bbvb;
    return 0;
}


// ---------------------------my BBVB.h code
#ifndef SAMAVAR_BBVB_H
#define SAMAVAR_BBVB_H

typedef struct VBResult{
    int set1=-1;
    int set2=-1;
    int set3=-1;
    int set4=-1;
    int set5=-1;
}VBResult;

#include "Sport.h"
#include "../TournamentStuf/Tournament.h"

class BBVB: public Sport {
protected:
    vector<Tournament<VBResult>> tours;
public:
    static BBVB& getInstance(){
        static BBVB b;
        return b;
    }
private:
    BBVB(){}

public:
    BBVB(BBVB const&)=delete;
    void operator=(BBVB const&) = delete;


    //-------------Setter------------

    //------------Getter-------------
    vector<Tournament<VBResult>> getTours() const;
    Tournament<VBResult> getTourById(int id) const;

    //----------Others---------------
    void addTour(Tournament<VBResult> v);

};

BBVB &bbvb=BBVB::getInstance(); 



#endif //SAMAVAR_BBVB_H





//------------------my Store and restore code
#ifndef SAMAVAR_STOREANDRESTORE_H
#define SAMAVAR_STOREANDRESTORE_H


#include "../Sports/BBVB.h"
#include "../Sports/PingPong.h"
#include "../Sports/Wrestling.h"

void Start(BBVB &b);
void Update(const BBVB &b);

void Start(PingPong &p);
void Update(const PingPong &p);

void Start(Wrestling &w);
void Update(const Wrestling &w);





#endif //SAMAVAR_STOREANDRESTORE_H

我有一个BBVB的bbvb实例,但它说您对此有多个定义。

我是Clion的新手,我没有关于cmake之类的足够信息,我认为问题是因为此而来。 我想在iostream.in中有cout和cin之类的东西,因此通过包含我的BBVB,我可以访问此对象。

Clion显示以下错误: CMakeFiles\Samavar.dir/objects.a(BBVB.cpp.obj):BBVB.cpp:(.bss+0x0): multiple definition of `bbvb' CMakeFiles\Samavar.dir/objects.a(main.cpp.obj):main.cpp:(.bss+0x0): first defined here CMakeFiles\Samavar.dir/objects.a(StoreAndRestore.cpp.obj):StoreAndRestore.cpp:(.bss+0x0): multiple definition of `bbvb' CMakeFiles\Samavar.dir/objects.a(main.cpp.obj):Samavar-master/Sports/BBVB.h:24: first defined here collect2.exe: error: ld returned 1 exit status

0 个答案:

没有答案