Безопасное приведение в C ++ / CLI - эквивалентно C # "как"? - PullRequest
7 голосов
/ 22 июля 2011

Ранее я спрашивал, было ли безопасным использование as в C # (т.е. не взорвется): Является ли использование "as" в C # безопасным способом приведения?

Мне понравился ответ, и в итоге я использовал что-то на его основе:

Foo x = y as Foo;
if (x != null)
{
    ...
}

Но теперь я конвертирую свой код C # в C ++ / CLI (из-за проблемы с зависимостью ..), поэтому вопросы ...

Я ищу C ++ / CLI, эквивалентный «as», это безопасно и не взорвется во время выполнения, если не будет правильного типа. Кто-нибудь может посоветовать актерский состав, который отвечает моим потребностям? (приведите пример, если можете)

Спасибо!

Ответы [ 3 ]

12 голосов
/ 22 июля 2011

C ++ способ сделать это - dynamic_cast. Я не знаю, совпадает ли это для управляемых ссылок с неуправляемыми ссылками, в MSDN было очень мало информации об этом.

1 голос
/ 28 июля 2011

Это может быть полезно: http://msdn.microsoft.com/en-us/library/85af44e9

0 голосов
/ 22 июля 2011

при компиляции C ++ вам нужно включить что-то под названием RTTI. Затем вы можете использовать dynamic_cast (дает ноль, аналогичный as) и typeid (аналогично is).

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