C++ C++;多个文件中的全局变量

C++ C++;多个文件中的全局变量,c++,visual-studio-2012,C++,Visual Studio 2012,我有一个类按钮,其中包括一个类按钮管理器,它管理按钮 然后我有两个函数来处理这些事情,一个类似于登录窗口,只有几个按钮,第二个是游戏菜单本身,里面也有按钮 然而,这两个窗口占用了相当多的行,所以我决定将其拆分为多个.cpp文件,在这里我只从main调用东西 问题是,我需要在.cpp和main.cpp中都包含button类,并且main和secondary cpp还包含一些dummy.h,其中包含呈现菜单的公共函数的声明 主要问题是ButtonManager有一个全局变量,编译时表示符号已经定义

我有一个类按钮,其中包括一个类按钮管理器,它管理按钮

然后我有两个函数来处理这些事情,一个类似于登录窗口,只有几个按钮,第二个是游戏菜单本身,里面也有按钮

然而,这两个窗口占用了相当多的行,所以我决定将其拆分为多个.cpp文件,在这里我只从main调用东西

问题是,我需要在.cpp和main.cpp中都包含button类,并且main和secondary cpp还包含一些
dummy.h
,其中包含呈现菜单的公共函数的声明

主要问题是ButtonManager有一个全局变量,编译时表示符号已经定义

示例代码:

a、 h(就像是按钮管理器头文件一样):

side.h(假设这是游戏主窗口):

side.cpp:

#include "side.h"
#include "abc.h"

#include <iostream>

int callSomething()
{
    std::cout << a.b << "\n";
    return a.b;
}
#包括“side.h”
#包括“abc.h”
#包括
int callSomething()
{
std::cout H:\Microsoft Visual Studio 11.0\example\Debug\dynamicdispatch.exe:致命错误LNK1169:找到一个或多个多重定义符号


a.h
中将变量声明为

struct A{
    int b;
};
extern struct A a;
然后在main.cpp中定义一次:

struct A a;
int main()
{
    //...
}

a.h
中,将变量声明为

struct A{
    int b;
};
extern struct A a;
然后在main.cpp中定义一次:

struct A a;
int main()
{
    //...
}

我搜索过,我知道
extern
关键字,但是如何将
extern
关键字应用于以这种方式定义的变量?我只知道如果我删除
#包括“abc.h”
来自
main.cpp
它可以工作,但是我不能在
main.cpp
中使用
struct A
,我搜索过,我知道
extern
关键字,但是如何将
extern
关键字应用到以这种方式定义的变量上呢?我只知道如果我删除
,包括“abc.h”
from
main.cpp
它可以工作,但是我不能在
main.cpp
中使用
struct A
,谢谢,这很有效,即使我认为它只能键入一次,但看起来不可能;编辑:您在
main
中有一个输入错误hehe@0x499602D2我修好了,上面写着mian谢谢,这是可行的,即使我认为它可能只被输入一次,但看起来这是不可能的;编辑:你在
main
hehe@0x499602D2我修好了,上面写着
mian
struct A a;
int main()
{
    //...
}