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

crere

我有一个Class Button,其中包括一个ButtonManager类,用于管理按钮。

然后,我有2个处理事情的功能,其中1个就像登录窗口,只有几个按钮,第二个是游戏菜单本身,里面也有按钮。

但是,两个窗口占用了很多行,因此我决定将其拆分为多个.cpp文件,在这里我只是从main调用东西。

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

主要问题是ButtonManager具有全局变量,并且在编译时说该符号已定义。

示例代码:

ah(就像它是“按钮管理器”头文件一样):

#ifndef _ABC_
#define _ABC_

struct A{
    int b;
}a = A();

#endif

side.h(可以说这是用于主游戏窗口):

#ifndef _SIDE_H_
#define _SIDE_H_

int callSomething();

#endif    //_SIDE_H_:

side.cpp:

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

#include <iostream>

int callSomething()
{
    std::cout << a.b << "\n";
    return a.b;
}

main.cpp:

#include "abc.h"
#include "side.h"
#include <iostream>

int main()
{
    callSomething();
    std::cin.get();
}

当我尝试编译它时,编译器抱怨:

1>side.obj : error LNK2005: "struct A a" (?a@@3UA@@A) already defined in DynamicDispatch.obj 1>H:\Microsoft Visual Studio 11.0\example\Debug\dynamicdispatch.exe : fatal error LNK1169: one or more multiply defined symbols found

感谢所有帮助

电脑

a.h声明变量为

struct A{
    int b;
};
extern struct A a;

然后在main.cpp中定义一次:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章