之前我曾问过在C#中使用as
是否安全(即不会爆炸):Is using "as" in C# a safe way of casting?
我喜欢这个答案并最终使用了基于它的东西:
Foo x = y as Foo;
if (x != null)
{
...
}
但是现在我将我的C#代码转换为C ++ / CLI(由于依赖问题......)所以问题就是......
我正在寻找相当于“as”的C ++ / CLI,这是安全的,如果类型不正确,也不会在运行时爆炸。任何人都可以建议一个满足我需求的演员吗? (如果可以,请提供一个例子)
谢谢!
答案 0 :(得分:12)
执行此类操作的C ++方法是dynamic_cast
。我不知道托管引用和非托管引用是否相同,MSDN对它的信息很少。
答案 1 :(得分:1)
答案 2 :(得分:0)
在编译C ++时需要一些名为RTTI的东西。
然后,您可以使用dynamic_cast
(提供类似于as
的null)和typeid
(类似于is
)。