use*_*914 0 c++ macos symbols x86-64 duplicates
如何解决这个问题呢?
刚得到以下错误:
g ++输出:
duplicate symbol _game in:
/var/folders/w6/yqp0s0t92hl5g842hg8tztfr0000gn/T/main-62666f.o
/var/folders/w6/yqp0s0t92hl5g842hg8tztfr0000gn/T/Game-a5a31d.o
duplicate symbol _game in:
/var/folders/w6/yqp0s0t92hl5g842hg8tztfr0000gn/T/main-62666f.o
/var/folders/w6/yqp0s0t92hl5g842hg8tztfr0000gn/T/Write-83f8ee.o
Run Code Online (Sandbox Code Playgroud)
看来问题不在头文件中。
编辑:头文件看起来像这样:
#ifndef GAME_H
#define GAME_H
#include "Color.h"
#include "Tile.h"
class Game
{
public:
Game();
~Game();
Color getActivePlayer();
void setStarttile(Tile Firststarttile);
Color togglePlayer();
void setRunning(bool run);
char newActiveplayer;
void run();
void runsecondmethod();
private:
Game(const Game &);
Color Activeplayer;
Tile *Starttile;
bool Running;
}game;
#endif
Run Code Online (Sandbox Code Playgroud)
您已Game在头文件“ Game.h”中实例化了一个实例,并且由于该实例已包含在多个文件中,因此game在链接时最终会有多个实例。更改:
class Game
{
public:
...
}game;
Run Code Online (Sandbox Code Playgroud)
至:
class Game
{
public:
...
};
extern Game game;
Run Code Online (Sandbox Code Playgroud)
然后添加:
Game game;
Run Code Online (Sandbox Code Playgroud)
在一个你的.cpp文件。