各位大神,我是想定义一个全局的容器map在两个不同的类(类administrator和类student)中使用,全局定义一个map容器名为mRoom并定义初始化函数InitRoom()去初始化map。
但在编译时显示错误LNK2005,mRoom在administrator.obj已定义,求指导,代码和具体的错误信息如下:
//首先附上定义容器和初始化函数的头文件mRoom.h
#pragma once
#include<iostream>
#include<map>
#include"goableFile.h"/*这个头文件里时定义的宏常量,用于输出流文件名*/
#include<fstream>
using namespace std;
map<int, int>mRoom;
void InitRoom();
初始化函数的具体实现如下mRoom.cpp
#include"mRoom.h"
//机房信息维护
void InitRoom()
{
ifstream ifs(ROMF, ios::out);
if (!ifs.is_open())
{
cout << "文件不存在" << endl;
system("pause");
system("cls");
return;
}
mRoom.clear();
int ID, NUM;
while (ifs >> ID && ifs >> NUM)
{
mRoom[ID] = NUM;
}
ifs.close();
}
然后附上在administrator.cpp初始化函数和使用该map容器的代码
//查看机房
void administrator::showRoom()
{
InitRoom();
for(map<int,int>::iterator it=mRoom.begin();it!=mRoom.end();it++)
{
cout << "机房编号为:" << it->first << "\t该机房最大容量为:" << it->second << endl;
}
system("pause");
system("cls");
}
main里面怎么写的
如果一个地方定义了
map<int, int>mRoom;
那么另一个地方应该写
extern map<int, int>mRoom;
基础问题,不要在头文件里定义变量,否则多个文件包含这个头文件就会出现重复定义的问题。