我正在尝试制作一个相当大的视频游戏,我当前处理鼠标输入的方法是将 mouseX、mouseY 和枚举 mouseState 作为参数传递给每个需要鼠标知识的单个对象的更新函数。它相当混乱,我想通过将鼠标变量放在一个名为 Input 的命名空间中来使它们更具全局性,以便我可以使用 Input::mouseX 等访问它们。
就目前而言,名称空间 Input 存在于 Input.h 中(内容如下)
#pragma once
#include "allegro5\allegro.h"
#include "J_Enum.h"
namespace Input{
ALLEGRO_EVENT_QUEUE *inputQueue;
int mouseX;
int mouseY;
MOUSE_STATE mouseState;
void setUpInput();
void updateInput();
};
并且两个成员函数在 Input.cpp 中定义
#include "Input.h"
void Input::setUpInput(){...declaration
void Input::updateInput(){...''
将 Input.h 包含在主循环对象的标头Core.h中后,链接器会发出嘶嘶声,因为在它看来,Input.h 中包含的所有内容现在都是乘法定义符号。很明显,我使用头文件有问题,因为据我所知,我在使用命名空间时没有犯任何明显的错误,而且 LNK2005 的错误代码前缀似乎暗示了链接器(?)。
如果有人可以阐明我的困境,我将不胜感激