- - PR -
C++/CLIでクラスの比較やインターフェースを実装しているかを知る方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-03 17:10
こんちは。
JavaやVB.NET、C#などのオブジェクト指向言語をやっていると、オブジェクトの クラスの型チェックやインターフェースを実装しているかをチェックすることが よくあります。 最近、C++/CLIをやり始めたのですが、そのような機能が言語仕様としてないよう です。 http://blogs.wankuma.com/ogiogi/archive/2006/09/22/39332.aspx どのようにすればいいのでしょうか? 基本になるObjectクラスにはGetTypeメソッドが実装してあり、これでクラス名が 取れるので、これを比較してできなくはなさそうですが・・・。 | ||||
|
投稿日時: 2007-02-03 19:30
クラス名で比較するのは止められた方が良いです。 お知りになりたいのは、typeid 演算子でしょうか? GetType メソッドではインスタンスが必要ですが、typeid 演算子ではインスタンスは必要ないです。 ということは... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-02-03 21:35
http://vene.wankuma.com/ecma372/15_expression.aspx#SS.15.3.7
typeidですね。 | ||||
|
投稿日時: 2007-02-05 00:44
RTTI(実行時型情報)で検索すると、幸せになると思うよ。
C++(CLIじゃなくても使える)の標準機能だけど、デフォルトで無効になっているのは、それなりにデメリットが多いから。なので本当に必要なのかよく考えてから使ったほうが良い。その機能を必要とするクラスが一部に限られるなら、クラスの名称を取得するようなインターフェースクラスを作るほうがオーバーヘッドは少ない。 | ||||
|
投稿日時: 2007-02-05 11:39
おはようございます。
ありがとうございました。解決しました。 | ||||
|
投稿日時: 2007-02-05 13:03
どうやって解決したの? ぜんぜんわかんないんだけど? | ||||
|
投稿日時: 2007-02-06 18:49
こんにちは。
皆さんがご指摘のように、typeidを使って解決したのですが・・・。 さらに言うならtypeidのIsInstanceOfTypeを使ったのです。 |
1