Приведение правильного пути в C ++ - PullRequest
4 голосов
/ 02 января 2012

Я прошу прощения, если это не считается достаточно хорошим вопросом (поскольку мое собственное решение просто работает, поэтому у меня на самом деле нет проблем), но здесь идет.
Я имею в виду, я был воспитан на Cи я только изучил C ++ позже, так что, возможно, я предвзят, но все же.

В этом конкретном случае есть одна библиотека, которая возвращает const char*, в то время как другой библиотеке требуется void* в качестве ввода.Поэтому, если я хочу вызвать вторую библиотеку с результатом первой, мне нужно будет написать

second(const_cast<void*>(static_cast<const void*>(first())));

Верно?Это единственный правильный путь, верно?

1 Ответ

8 голосов
/ 02 января 2012

A char* может быть неявно преобразовано в void*, поэтому ваш код может быть упрощен до следующего:

second(const_cast<char*>(first()));

Это безопасно, только если определение second работает , как если бы его параметр имел тип const void*.

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