C++ 链接错误:找到一个或多个多重定义符号

C++ 链接错误:找到一个或多个多重定义符号,c++,C++,我试图编译我的程序,但我坚持这些错误,我不知道在哪里找到并纠正它 1>Main.obj : error LNK2005: "int * Coins" (?Coins@@3PAHA) already defined in DisplayErrorMessage.obj 1>Main.obj : error LNK2005: "int * NumCoins" (?NumCoins@@3PAHA) already defined in DisplayErrorMessage.obj 1&g

我试图编译我的程序,但我坚持这些错误,我不知道在哪里找到并纠正它

1>Main.obj : error LNK2005: "int * Coins" (?Coins@@3PAHA) already defined in DisplayErrorMessage.obj
1>Main.obj : error LNK2005: "int * NumCoins" (?NumCoins@@3PAHA) already defined in DisplayErrorMessage.obj
1>Main.obj : error LNK2005: "int * ItemPrice" (?ItemPrice@@3PAHA) already defined in DisplayErrorMessage.obj
1>Main.obj : error LNK2005: "int * NumItems" (?NumItems@@3PAHA) already defined in DisplayErrorMessage.obj
1>MakeSelection.obj : error LNK2005: "int * Coins" (?Coins@@3PAHA) already defined in DisplayErrorMessage.obj
1>MakeSelection.obj : error LNK2005: "int * NumCoins" (?NumCoins@@3PAHA) already defined in DisplayErrorMessage.obj
1>MakeSelection.obj : error LNK2005: "int * ItemPrice" (?ItemPrice@@3PAHA) already defined in DisplayErrorMessage.obj
1>MakeSelection.obj : error LNK2005: "int * NumItems" (?NumItems@@3PAHA) already defined in DisplayErrorMessage.obj
1>ShowMenu.obj : error LNK2005: "int * Coins" (?Coins@@3PAHA) already defined in DisplayErrorMessage.obj
1>ShowMenu.obj : error LNK2005: "int * NumCoins" (?NumCoins@@3PAHA) already defined in DisplayErrorMessage.obj
1>ShowMenu.obj : error LNK2005: "int * ItemPrice" (?ItemPrice@@3PAHA) already defined in DisplayErrorMessage.obj
1>ShowMenu.obj : error LNK2005: "int * NumItems" (?NumItems@@3PAHA) already defined in DisplayErrorMessage.obj
1>c:\users\kanaan\documents\visual studio 2010\Projects\Assign2\Debug\Assign2.exe : fatal error LNK1169: one or more multiply defined symbols found
以下是完整的代码:

自动售货机

MakeSelection.cpp

您可以使用cpp文件和标题

int*Coins;在标题中不是定义全局的方式。这是一个定义。你应该使用

extern int* Coins;
并在单个翻译单元cpp文件中定义变量


由于在所有3个cpp文件中都包含了带有定义的标题,因此该符号会被多次定义,从而导致错误。

在标题文件中使用include-guard:

#ifndef _VENDING_MACHINE_H_
#define _VENDING_MACHINE_H_

//your VendingMachine.h contents

#endif //_VENDING_MACHINE_H_

大家好,欢迎光临。我们需要一些代码来开始。此外,在发布之前,您应该阅读此处。看起来您不止一次包含或定义了某个内容。已定义是指您尝试定义某些内容。如果您在头文件中实现了函数,但没有多个包含保护,请参阅。发布导致问题的代码。很抱歉,我如何发布完整的内容代码,我应该把它粘贴到评论栏吗?@KakaAwira No.编辑你的问题,并将其作为附录放在底部。+1用于实际阅读发布的日志,并且知道包含守卫与OP的问题无关。如果我能再次投票,我会的。谢谢,这会有所帮助,但出现另一个错误错误错误C2082:重新定义形式参数“NumItems”@KakaAwira使用实际的头文件代码更新问题。
extern int* Coins;
#ifndef _VENDING_MACHINE_H_
#define _VENDING_MACHINE_H_

//your VendingMachine.h contents

#endif //_VENDING_MACHINE_H_