C ++ (и ROS) - Включить или переслать объявление ссылки с установленным значением по умолчанию и typedef - PullRequest
0 голосов
/ 17 октября 2018

У меня есть два очень связанных вопроса относительно предварительных деклараций, их преимуществ и различий с #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, так как яя использую только значение по умолчанию внутри метода.

1 Ответ

0 голосов
/ 17 октября 2018

Предварительного объявления X достаточно, чтобы использовать X* или X& в качестве параметра функции или члена класса, поскольку полное определение класса не требуется для возможности использования его адреса.

Но для создания объекта этого класса, даже объекта со значением по умолчанию, вам понадобится его определение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...