繁体   English   中英

C++(和 ROS) - 包含与使用 set default 和 typedef 引用的前向声明

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

我有两个关于前向声明的非常相关的问题,它们的优点和与#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&用作函数参数或类成员,因为不需要类的完整定义即可使用其地址。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM