C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义

C++ (and ROS) - Include vs. forward declare of reference with set default and typedef

本文关键字:引用 设置 声明 默认值 定义 类型 ROS 包含 C++      更新时间:2023-10-16

我有两个非常相关的问题,关于前向声明,它们的优点和与#include的区别。在阅读了它们之后,我仍然不清楚是否:

  • 使用 ROS 消息中的 ConstPtr(像这样(算作指针,可以(以某种方式(向前声明,或者需要#include;

  • void foo(const Eigen::Vector3d& scale={0.001, 0.001, 0.001});.h 文件中可以使用类似的东西(但这实际上并没有编译(

    namespace Eigen
    {
    class Vector3d;
    }
    

在所有其他#include之后的 .h 顶部,或者我是否应该使用正确的标题。

需要明确的是,第二个问题是scale有一个默认值,这实际上是我将在.cpp中一直使用的默认值。这是我使用 Vector3d 的唯一实例。

我也相当确定前向声明是否足够,因此我也不需要在.cpp中包含正确的标头,因为我只在方法中使用默认值。

X的前向声明足以将X*X&用作函数参数或类成员,因为不需要类的完整定义即可使用其地址。

但是为了创建该类的对象,即使是具有默认值的对象,您也需要它的定义。