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

Kob*_*kie 1 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;
Run Code Online (Sandbox Code Playgroud)

该结构位于我的WalkingCameraManipulator.h类中。WalkingCameraManipulator在WalkingCameraManipulator.cpp中实现,我的主类中有一个#include“ WalkingCameraManipulator”。

错误1错误LNK2005:在main.obj中已经定义了“ struct keyState state_manager”(?state_manager @@ 3UkeyState @@ A)错误2错误LNK1169:找到一个或多个乘法定义的符号

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

Luc*_*ore 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;
Run Code Online (Sandbox Code Playgroud)

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;
 } ;
Run Code Online (Sandbox Code Playgroud)