内容へ移動
C++プログラマのためのC++/CLI入門
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
TOP
»
cli
»
型情報
cli:型情報
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
{{indexmenu_n>27}} ====== 型情報 ====== C++ではコンパイルされてしまえば型情報はなくなります。例えばインスタンスからそのクラス名を取得することはできません。C++/CLIでは、型情報はなんでも取得できます。 最も簡単な型情報の取得はtypeidキーワードを使っておこないます。 <code cpp> using namespace System; int main() { Type^ t = String::typeid; Console::WriteLine(t->FullName); Console::WriteLine(t->AssemblyQualifiedName); return 0; } </code> 型情報はクラスtypeを使ってアクセスします。 インスタンスからtypeを得るには、ObjectのメソッドであるGetType()を利用します。 <code cpp> using namespace System; void showType(Object^ o) { Type^ t = o->GetType(); Console::WriteLine(t->FullName); Console::WriteLine(t->AssemblyQualifiedName); } ref class C { int a; }; int main() { String^ s = L"ABC"; showType(s); int i = 0; showType(i); C^ c = gcnew C; showType(c); array<C^>^ ar = gcnew array<C^>(10); showType(ar); return 0; } </code> Type::GetType(String)を使用すれば、任意の名前からTypeを取得できます。 <code cpp> using namespace System; int main() { Type^ t1 = Type::GetType("System.Console"); return 0; } </code> Type::GetType()に渡す文字列は、AssemblyQualifiedNameというものを指定します。この場合ネームスペースの区切り文字はコロンではなくピリオドになります。 Typeクラスは同じクラスに対して常に同じインスタンスを返すことを保障しています。よって==などでTypeクラスのハンドルを比較し、同じ型かどうか調べることができます。
/var/www/html/virtual/cppcli/data/pages/cli/型情報.txt
· 最終更新: 2013/12/23 09:08 (外部編集)
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ