C++使用全局容器map的error LNK2005?

各位大神,我是想定义一个全局的容器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;

基础问题,不要在头文件里定义变量,否则多个文件包含这个头文件就会出现重复定义的问题。