問題タブ [rtti]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++でRTTIをアクティブ化する
UNIXで作業しているときにC++でRTTIをアクティブ化する方法を教えてもらえますか。無効または有効にできると聞きました。UNIX環境で、RTTIが有効か無効かを確認するにはどうすればよいですか?
aCC
HPUXでコンパイラを使用しています。
delphi - Delphiの新しいRTTIの実用的な使用法-属性、値
Delphiの新しいRTTIについてのすばらしい説明を見つけましたが、読んだすべてのことについて1つの重要なことを理解していません-どこでそれを使用できますか?
何を置き換えることになっていますか?
delphi - フォーム コンポーネント プロパティの値を取得する Delphi
私はボイラープレート機能を実装しています - ユーザーがいくつかのコンポーネントの説明を変更できるようにします - TLabel
s のように - 実行時に。例えば
...
設計時には、Label のキャプション プロパティの値は「First Name」です。アプリケーションの実行時に、ユーザーがキャプション値を「Other Name」に変更できる機能があります。これが変更されると、FooClass のクラス インスタンスのラベルのキャプションがすぐに更新されます。
現在の問題は、ユーザーが何らかの理由で 'First Name' などの設計時の値に戻したい場合、それは不可能に思えることです。
私はRTTIContextメソッドとそのすべてを使用できますが、結局のところ、値を変更するにはクラスのインスタンスが必要なようで、これはすでに変更されているため、レンガの壁にぶつかったようですそれを回避する。
私の質問はこれです-クラスをインスタンス化せずに、クラスのメンバーのプロパティに古いRTTIメソッドまたは新しいRTTIContextのものを使用する方法はありますか-つまり、ClassType定義からプロパティを取得します。
これは私の試みのコードスニペットです:
あらゆる種類のエラーが発生しています。どんな助けでも大歓迎です。
c++ - 派生クラスインスタンスをvoid*としてC++のジェネリックコールバックに渡す
これは少し複雑な問題なので、何が起こっているのかを説明するために最善を尽くします。何かが足りない場合は、明確にするために教えてください。
片側にモジュールまたはアプリケーションが「サービス」を提供し、クライアントがこのサービスでアクションを実行できるコールバックシステムがあります(基本的には非常に基本的なIPC)。将来の参考のために、次のような定義があるとしましょう。
これは、構造体や組み込みなどの基本的なタイプで正常に機能します。
MI構造は次のようになります。
プロバイダーは、ハードウェアドライバーから、ディスクイメージを処理する接着剤まで何でもかまいません。重要なのは、クラスがディスクを継承するということです。
システム内のすべての新しいディスクについて通知される「サービス」があり、ここで問題が解決されます。
問題は、SomeDiskProviderはDiskを継承しますが、コールバックハンドラーはその型を受け取ることができないことです(コールバック関数ポインターはジェネリックでなければならないため)。
RTTIとテンプレートはここで役立ちますか?
任意の提案をいただければ幸いです。
c++ - タイプの識別
私のアプリケーションには、継承チェーンの最後にあるクラスのみが非抽象クラスである継承階層があります。また、boost::variantの使用法もあります。ポインタと型を取り、オブジェクトがその型に属しているかどうかを示す関数を書きたいと思います。
例えば
ここで、ブーストバリアントがある場合、ブーストバリアントがその特定のタイプを格納しているかどうかを調べたいと思います。誰かがそれを手伝ってくれますか?バリアントであるかどうかを確認するためにパラメータを追加したくありません。抽象性を見つけるためにも、私はboost::is_abstractを使用しています。
ありがとう、ゴクル。
c++ - C++ での RTTI と移植性
コンパイラが RTTI を「サポート」していない場合、そのコンパイラは仮想関数を含むクラス階層を処理できないということですか? それとも、RTTI が移植可能ではないという文献を誤解しており、問題は別の場所にあるのでしょうか?
コメントありがとうございます!
c# - C# アプリケーションの C++ lib RTTI
C++ lib ファイルを使用する C# でゲーム エディターを開発しています。C# の C++ クラスに RTTI が必要です。C#でC++クラスのRTTIを取得することは可能ですか? はいの場合、どのように?
delphi - バリアント レコードの Rtti
Delphi 2010 で一種のオブジェクト/レコード シリアライザーを作成しようとしていますが、レコードがバリアント レコードであるかどうかを検出する方法があるかどうか疑問に思っています。たとえば、Types.pas で定義されている TRect レコード:
シリアライザーはデータ構造に対して再帰的に動作する必要があるため、TPoint レコードに降りて、シリアライズされたファイルに冗長な情報を生成します。レコードの詳細情報を取得することで、これを回避する方法はありますか?
delphi - Delphi 2010 での Rtti データ操作と一貫性
元のデータへの参照を使用して TValue を作成する方法を知っている人はいますか? 私のシリアライゼーション プロジェクトでは、( XML-Serializationで提案されているように) TValues を内部ツリー構造に格納する汎用シリアライザーを使用します (例の MemberMap に似ています)。
このメンバ ツリーは、動的セットアップ フォームを作成し、データを操作するためにも使用する必要があります。私の考えは、データのプロパティを定義することでした:
GetData、SetData メソッドの実装:
残念ながら、TValue.From メソッドは常に元のデータのコピーを作成します。したがって、アプリケーションがデータに変更を加えるたびに、DataModel は更新されません。逆に、DataModel を動的な形式で変更しても、元のデータは影響を受けません。確かに、何かを変更する前後にいつでも Data プロパティを使用できますが、DataModel 内で多くの Rtti を使用するため、いつでもこれを実行したくありません。
おそらく誰かがより良い提案をしていますか?
delphi - 複雑なデータ構造のフィールドとプロパティにアクセスする Rtti
「 Delphi 2010 での Rtti データの操作と整合性」ですでに説明したように、元のデータと rtti 値の間の整合性は、TRttiField とインスタンス ポインタのペアを使用してメンバーにアクセスすることによって実現できます。これは、基本的なメンバー型 (整数や文字列など) のみを持つ単純なクラスの場合は非常に簡単です。しかし、構造化されたフィールド タイプがある場合はどうなるでしょうか。
次に例を示します。
メンバーに簡単にアクセスするために、値の取得と設定、属性の取得、値のシリアル化/逆シリアル化などのインターフェイスを提供するメンバーノードのツリーを構築したいと考えています。
したがって、最も重要なことは、値を取得/設定することです。これは、前に述べたように、TRttiField の GetValue および SetValue 関数を使用して行われます。
では、FPoint メンバーのインスタンスとは何でしょうか? Parent が TExample クラスのノードであり、インスタンスが既知でメンバーがフィールドであるとします。その場合、Instance は次のようになります。
しかし、レコード プロパティのインスタンスを知りたい場合はどうすればよいでしょうか。この場合、オフセットはありません。データへのポインターを取得するためのより良い解決策はありますか?
FAnotherClass メンバーの場合、インスタンスは次のようになります。
これまでのところ、ソリューションは機能しており、情報を失うことなく、rtti または元の型を使用してデータ操作を行うことができます。
しかし、配列を操作する場合、事態はさらに難しくなります。特にポイントの 2 番目の配列。この場合、ポイントのメンバーのインスタンスを取得するにはどうすればよいですか?