Objective-Cに相当するC++のdynamic_castはありますか?Objective-C dynamic_cast?
は、それは、これを使用して偽造することができます。
MyClass *safeObject = [object isKindOfClass: [MyClass class]]
? (MyClass *)originalObject : nil;
しかし、私は多くの場合、それを入力する必要がない場合でも、これは、入力するためのコードがたくさんあります。
私は、これはかなり右ではないかもしれません少しさびが、私はC++で同等のだろうと信じて:
MyClass safeObject = dynamic_cast<MyClass>(orginalObject);
ここコンテキストはパラメータはのタイプとして定義されているブロックでありますより一般的なクラスですが、このブロックでは、それが特定のサブクラスであることを「知っています」。それにもかかわらず、私は(MyClass *)originalObject
で盲目的にキャストし、理論的に考えられるエラーを無視したくありません。
私はdynamic_cast
が大好きですが、このケースも安全に対処するための代替アプローチがあれば幸いです。
最悪の場合、このためのマクロを書くことができます。 – JustSid
Objective-Cはダックタイプです。かなり正直なところ、「複雑な」キャストは言語に対してちょっとしたローミングです。 – zneak
はい、おそらくここで間違った質問をしたと思っています。私が*質問しなければならない質問には、とにかくそれを期待していないので、NSAssert([object isKindOfClass:[MyClass class]]、@ "blahblah")の答えがありました。 :) –