Неожиданное поведение при передаче константной строки в функцию c ++ - PullRequest
0 голосов
/ 15 марта 2020

Я получаю непредсказуемое поведение при передаче функции const string в качестве параметра.

У меня есть эта функция:

std::string getStatusByTopic(const std::string topic){
    if (topic.compare(TOPIC_WP_SM_CMD) == 0)
            return state_to_string(STATUSES::WP_HANDLER_STATUS);
}

Который еще не полностью реализован.

И у меня есть эта функция:

InsertStatus(getStatusByTopic(TOPIC_WP_SM_CMD),msg);

Который объявлен как:

void Msp::InsertStatus(const std::string status_topic, const std_msgs::String::ConstPtr& new_status)

У меня есть 2 вопроса:

  1. Эти функции были успешно скомпилированы, даже если существует возможное использование, когда getStatusByTopic() ничего не возвращает, когда его определенный возвращаемый тип равен string . Как это возможно?

  2. Когда код выполняется, в сценарии, который и getStatusByTopic(TOPIC_WP_SM_CMD) ничего не возвращает. Theres нет ошибок времени выполнения, более того - TOPIC_WP_SM_CMD передается в качестве параметра в InsertStatus() (который определен как "/ some / topic /"). Вау, это возможно?

Спасибо.

...