gpt4 book ai didi

c++ - 在 C++ 中包含文件时重新定义函数(错误 LNK2005)

转载 作者:行者123 更新时间:2023-11-30 04:08:27 25 4
gpt4 key购买 nike

我是 C++ 的新手,我有一个基本的疑问。
我正在创建一个法语动词变位应用程序。
我有两个文件,一个 Conjugator.cpp 文件和一个 ErVerbs.cpp 文件。我想将大部分函数保留在 ErVerbs 源文件中并使用变位符文件来使用这些功能。

下面是一些代码片段:

共轭器.cpp

#include <iostream>
#include <string>
#include "Variables.h"
#include "ErVerbs.cpp"
#include "IrVerbs.cpp"
#include "ReVerbs.cpp"
using namespace std;

void check()
{
if (verb.substr(len - 2, len) == "er")
erVerbs();
else if (verb.substr(len - 2, len) == "ir")
irVerbs();
else if (verb.substr(len - 2, len) == "re")
reVerbs();
}
int main()
{
cout << "Enter verb : ";
getline(cin, verb);
cout << "Enter tense : ";
getline(cin, tense);
len = verb.length();
check();
}

ErVerbs.cpp

#include <iostream>
#include <string>
using namespace std;

void erVerbs()
{
cout << "er Verb"; cin.get();
}

类似的,我还有另外三个类似功能的.cpp源文件。

当我构建程序时,我收到一条错误消息,指出我正在使用的每个方法都已定义已经。

1>ErVerbs.obj : error LNK2005: "void __cdecl erVerbs(void)" (?erVerbs@@YAXXZ) already  defined in Conjugator.obj
1>ErVerbs.obj : error LNK2005: "void __cdecl erVerbs(void)" (?erVerbs@@$$FYAXXZ) already defined in Conjugator.obj
1>IrVerbs.obj : error LNK2005: "void __cdecl irVerbs(void)" (?irVerbs@@YAXXZ) already defined in Conjugator.obj
1>IrVerbs.obj : error LNK2005: "void __cdecl irVerbs(void)" (?irVerbs@@$$FYAXXZ) already defined in Conjugator.obj
1>ReVerbs.obj : error LNK2005: "void __cdecl reVerbs(void)" (?reVerbs@@YAXXZ) already defined in Conjugator.obj
1>ReVerbs.obj : error LNK2005: "void __cdecl reVerbs(void)" (?reVerbs@@$$FYAXXZ) already defined in Conjugator.obj

如果有人能告诉我如何将函数保存在单独的源文件中并将它们#include 在一个源文件中并使用它们的函数而不会出现重新定义错误,我将不胜感激。

最佳答案

不要:

#include "ErVerbs.cpp"

在 Conjugator.cpp 中,这是导致链接器错误的原因。通过包含你的 cpp 文件,你再次重新定义了这个函数。

您应该创建 ErVerbs.h 文件并将函数声明放入其中:

#if !defined(ER_VERBS_H)
#define(ER_VERBS_H)
void erVerbs();
#endif

并且在 Conjugator.cpp 中,包括#include "ErVerbs.h",对于其他函数也是如此。

关于c++ - 在 C++ 中包含文件时重新定义函数(错误 LNK2005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com