C ++找到一个或多个乘法定义的符号

时间:2012-10-30 20:31:31

标签: c++

我有以下结构用

来管理相机状态
 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:找到一个或多个多重定义的符号

但是,我正在处理以下错误消息,需要找到我的结构的最佳位置。关于我在这里可以做什么的任何想法?提前谢谢。

1 个答案:

答案 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;
 } ;