У меня есть два очень связанных вопроса относительно предварительных деклараций, их преимуществ и различий с #include
с.Прочитав их, мне все еще неясно, если:
с использованием ConstPtr из сообщения ROS (например, this ) считается указателем и может (как-то)форвард объявлен, или требует #include
;
void foo(const Eigen::Vector3d& scale={0.001, 0.001, 0.001});
в файле .h будет хорошо с чем-то вроде (но это на самом деле не компилируется)
namespace Eigen
{
class Vector3d;
}
в верхней части .h после всех других #include
s или если я должен использовать правильный заголовок.
Для ясности, вторая проблема связана с тем фактом, что scale
имеет значение по умолчанию, которое я всегда буду использовать в .cpp.Это единственный случай, когда я использую Vector3d.
Я также вполне уверен, достаточно ли предварительной декларации, поэтому мне не нужно было бы также включать правильный заголовок в .cpp, так как яя использую только значение по умолчанию внутри метода.