gpt4 book ai didi

c++ - 项目错误中的 std::map

转载 作者:太空宇宙 更新时间:2023-11-04 15:03:34 27 4
gpt4 key购买 nike

我有这两个文件:

Circles.h:

#ifndef CIRCLE_H
#define CIRCLE_H
#include <map>
using namespace std;

map<int, int> colormap;

#endif

main.cpp:

#include <iostream>
#include "Circles.h"
using namespace std;

int main ()
{
int a;
cin>>a;
cout<<a<<endl;
return 0;
}

错误:

||=== Build: Debug in Mulit-game (compiler: GNU GCC Compiler) ===| obj\Debug\main.o||In function ZSt11__addressofISt4pairIKiN2sf5ColorEEEPT_RS5_':|
D:\SFML Projects\Mulit-game\main.cpp|7|multiple definition of
colormap'| obj\Debug\Circles.o:c:\program files (x86)\codeblocks\mingw\lib\gcc\mingw32\4.8.1\include\c++\mingw32\bits\gthr-default.h|300|first defined here| ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

我不知道为什么会这样,因为我已经搜索了我项目的所有文件, map 只在 Circles.h 中找到。

最佳答案

我假设 map 实际上称为 colormap,并且头文件包含在多个源文件中?因为这是您获得该错误的唯一方法。

问题是您在头文件中定义变量colormap,因此它在包含头文件的每个源文件中定义。

相反,您应该只在头文件中进行外部声明,并在一个源文件中进行定义。


因此,在头文件中执行例如

extern std::map<int, int> colormap;  // Declare the colormap variable

在您的一个源文件中,在全局范围内:

std::map<int, int> colormap;  // Define the colormap variable

关于c++ - 项目错误中的 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23136142/

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