小编use*_*261的帖子

多个文件使用的头文件中的结构声明导致架构 x86_64 的重复符号

尽管我在所有头文件中都包含了头文件保护,但当我创建头文件 PointXYZRGBAI.h 并将其包含在 LidarFile.cpp 和 core.cpp 中时,会生成错误

duplicate symbol _EIGEN_ALIGN_16 in:
    CMakeFiles/core.dir/core.cpp.o
    CMakeFiles/core.dir/LidarFile.cpp.o
ld: 1 duplicate symbol for architecture x86_64
Run Code Online (Sandbox Code Playgroud)

错误似乎抱怨的标题是

#define PCL_NO_PRECOMPILE

#ifndef POINTXYZRGBAI_H
#define POINTXYZRGBAI_H
#endif

#include <pcl/point_types.h>

struct PointXYZRGBAI{
  PCL_ADD_POINT4D;
  union{
    struct{
      float intensity;
      uint32_t rgba;
    };
    float data_c[4];
  };
  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
} EIGEN_ALIGN_16;

POINT_CLOUD_REGISTER_POINT_STRUCT(PointXYZRGBAI,
                                  (float, x, x)
                                  (float, y, y)
                                  (float, z, z)
                                  (float, intensity, intensity)
                                  (uint32_t, rgba, rgba)
)

inline std::ostream& operator << (std::ostream& os, const PointXYZRGBAI& p){
  os << "(" << p.x << ", " …
Run Code Online (Sandbox Code Playgroud)

c++ struct boost header eigen

4
推荐指数
1
解决办法
1105
查看次数

T ::*在函数参数列表的声明中表示什么?

我在我的代码中声明了一个特定的键盘回调函数:

void keyboardEventCallback(const pcl::visualization::KeyboardEvent &event, void* viewer_void, void* widget_void);
Run Code Online (Sandbox Code Playgroud)

键盘事件是传递给回调函数的实际事件,viewer_void参数是指向PCLVisualizer类的指针,该类生成用于呈现的窗口,而widget_void是指向与Qt接口的窗口小部件的指针.

在pcl的文档中,注册函数传递用于注册键盘函数的参数

boost::signals2::connection registerKeyboardCallback(void(T::*callback)(const pcl::visualization::KeyboardEvent&, void*), T& instance, void* cookie=nullptr)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,注册函数声明中的含义T::*什么,为什么我不允许传递这个:

m_vis->registerKeyboardCallback(keyboardEventCallback, (void*)&m_vis, (void*)this);
Run Code Online (Sandbox Code Playgroud)

m_vis可视化器在哪里,keyboardcallback是回调,这是小部件.

为什么我不能这样注册.这是针对点云库的.

c++ qt callback void point-cloud-library

4
推荐指数
1
解决办法
1136
查看次数

标签 统计

c++ ×2

boost ×1

callback ×1

eigen ×1

header ×1

point-cloud-library ×1

qt ×1

struct ×1

void ×1