我有以下结构用
来管理相机状态 struct keyState
{
float x_rotation, y_rotation, z_rotation;
float x_rotation_rad, y_rotation_rad, z_rotation_rad;
float x_pos, y_pos, z_pos;
} state_manager;
此结构位于我的WalkingCameraManipulator.h类中。 WalkingCameraManipulator在WalkingCameraManipulator.cpp中实现,我的主类中有一个#include“WalkingCameraManipulator”。
错误1错误LNK2005:“struct keyState state_manager”(?state_manager @@ 3UkeyState @@ A)已在main.obj中定义 错误2错误LNK1169:找到一个或多个多重定义的符号
但是,我正在处理以下错误消息,需要找到我的结构的最佳位置。关于我在这里可以做什么的任何想法?提前谢谢。
答案 0 :(得分:5)
尾随state_manager
定义一个实例。在标题中。哪个错了。我建议你将代码重构为:
struct keyState
{
float x_rotation, y_rotation, z_rotation;
float x_rotation_rad, y_rotation_rad, z_rotation_rad;
float x_pos, y_pos, z_pos;
} ;
extern keyState state_manager;
//somecppfile.cpp
keyState state_manager;
extern
部分是声明,定义现在位于单个实现文件中。这模仿了您的预期行为,但可能不是您真正想要的。您真的想要keyState
的全局实例吗?如果没有,请将其全部删除:
struct keyState
{
float x_rotation, y_rotation, z_rotation;
float x_rotation_rad, y_rotation_rad, z_rotation_rad;
float x_pos, y_pos, z_pos;
} ;