C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
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&
用作函数参数或类成员,因为不需要类的完整定义即可使用其地址。
但是为了创建该类的对象,即使是具有默认值的对象,您也需要它的定义。
相关文章:
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 如何在引用上设置数据断点
- 使用 sscanf 设置结构引用的值
- 将函数的引用设置为其他 c++ 文件中的非静态函数
- 通过初始化列表设置抽象类的引用
- 将常量引用成员设置为临时变量是否安全
- 对象超出范围后,引用成员设置为 0
- 为什么设置/get_default_resource使用指针而不是引用?
- 在构造函数中设置引用?
- 如何在构造函数之后设置引用?
- 通过引用设置类时会发生什么情况
- 从函数返回 libconfig 类设置对象引用
- qt vsaddin错误对象引用未设置为对象的istanse
- 为什么我们需要在move构造函数中将右值引用设置为null
- 智能指针:通过引用设置、重置、设置null、null检查或重置检查
- 为通过引用设置参数的函数命名的样式
- 是否可以在没有常量的情况下将类对象引用设置为c++中的默认参数
- 删除对象会将其引用设置为NULL
- 将引用设置为第二个变量