C++ LNK 2005 错误"已在 .obj 中定义



>我收到此 LNK 2005 错误,即使据我所知,我已经使用正确的头文件和 cpp 文件格式对游戏类进行了分类。

在谷歌上搜索了一段时间的问题似乎是此错误的主要原因之后,任何人都可以看到我搞砸了什么吗?

我的 game.h 文件如下:

#pragma once
class Game
{
public:

//Variables
char grid[9][8] = { { '#','#','#','#','#','#','#','#' },
{ '#','G',' ','D','#',' ',' ','#' } ,
{ '#',' ',' ',' ','#',' ',' ','#' } ,
{ '#','#','#',' ','#',' ','D','#' } ,
{ '#',' ',' ',' ','#',' ',' ','#' } ,
{ '#',' ','#','#','#','#',' ','#' } ,
{ '#',' ',' ',' ',' ',' ',' ','#' } ,
{ '#','#','P','#','#','#','#','#' } ,
{ '#','#','#','#','#','#','#','#' } };
int width, height;
int pX;
int pY;

char direction;
bool west;
bool north;
bool south;
bool east;
int quit;
Game();
};

我的游戏.cpp文件是:

#include "stdafx.h"
#include <String> 
#include <iostream>
#include "Game.h"
using namespace std;
//constructoer
Game::Game()
{
width = 8, height = 8;
pX = 2;
pY = 7;

west = false;
north = true;
south = false;
east = false;
quit = 0;
}

我目前的主要内容实际上只是创建对象的实例

主要:

#include "stdafx.h"
#include <String> 
#include <iostream>
#include "Game.cpp"
#include "Game.h"

using namespace std;

int main()
{
Game g;
return 0;
}

当包含game.cpp时,您实际上实现了构造器Game::Game()两次,即一次在game.cpp中(这是一个单独的翻译单元(,一次在main.cpp中(在包含构造函数实现代码的地方(。 因此,您会收到链接器错误,而不是编译器错误。

要解决此问题,请删除#include "game.cpp"

相关内容

  • 没有找到相关文章

最新更新