[英]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.