問題タブ [metaobject]

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.

0 投票する
2 に答える
204 参照

python - Pythonでは、変数をメソッドに代入するとどういう意味ですか?

CherryPyチュートリアルを読んで、私はこれに出くわしました

ということでしたか。メソッド インデックスのローカル スコープで変数が公開されていますか? もしそうなら、expose の値を変更できますか? クラス定義をオブジェクト自体として公開するには、PythonのMetaObjectプロトコルと関係があると思います。

0 投票する
1 に答える
2672 参照

qt - Qt-カスタムポインタを引数として取るスロットを呼び出す

Qtのシグナルとスロットをハックしようとしていますが、QMetaType::invokeMethodが呼び出されているスロットにポインター引数を正しく渡さないという問題が発生しました。

それから私はそれを次のように呼びます:

どこclass MyObject : public QObject { ... }。私もしQ_DECLARE_METATYPE(MyObject *)ますqRegisterMetaType<MyObject *>("MyObject *")

何が起こるかというと、レシーバーのスロットが呼び出されていますが、引数の値は、 as0に何を渡しても常に重要です。call(...)Q_ARG

好奇心から、レシーバーの自動生成されたMOCファイルを調べたところ、スロットが次のコードで呼び出されていることがわかりました。

の値が。_a[1]の適切なアドレスを持っていることがわかりますMyObject *。しかし、reinterpret_castそれをに変え0ます。

今、私は次の質問があります:

1)プログラムでスロットを呼び出し、ポインタ引数がスロットに適切に渡されるようにするにはどうすればよいですか?2)これは*reinterpret_cast< MyObject*(*)>(_a[1])どういう意味ですか?余分な括弧の(*)意味と、このコードの解釈方法は?

0 投票する
2 に答える
3907 参照

c++ - QMetaObjectからメソッドを取得できません。メソッドのオフセットとカウントが等しい

QObjectから継承するクラスがあり、Q_OBJECTマクロがあります。

同じヘッダーの別のクラスで、そのクラスのインスタンスを作成してから、「SomeClass」からすべてのメソッドを取得してQMapに格納しようとします。

..。

しかし、これは、メソッドのオフセットがメソッドの数に等しいため、追加されたメソッドを表示しません。なぜそうなるのでしょうか。私は理由がわからない、助けてくれてありがとう。

0 投票する
2 に答える
7018 参照

c++ - そのクラスのインスタンス化を作成せずに QObject 派生クラスのクラス名を取得する方法はありますか?

私はこのようなものを探しています:

MyClass::metaObject()->className()

このコードが実行される時点で MyClass のインスタンス化が存在しないため、これは機能しません。

これが何らかの形で可能である場合、MyClass から派生したクラスのすべての名前を取得する方法はありますか?

0 投票する
1 に答える
384 参照

c++ - staticMetaObject.className() が親クラスのクラス名を返すのはなぜですか?

クラス 'Units' から派生したクラス 'Default' があります。

Unitsの代わりに返しますDefault。何故ですか?どうすればこれを修正できますか?

0 投票する
2 に答える
11856 参照

qt - 関数Qtで関数名を取得する方法

何か問題が発生したときにログを作成しようとするので、クラス情報と関数名を次のように書きたいと思います。

これを行う方法?

0 投票する
1 に答える
3036 参照

groovy - Groovy のメタオブジェクト プロトコル (MOP)

私は Groovy プログラミング言語を初めて使用し、Groovy の動的な性質と機能を完全に理解しようとしています。私が知っていることは、Groovy で作成された最も基本的な形式のすべてのクラスは次のように見えるということです (GroovyObject を実装し、Java Object を拡張します)。

Groovy オブジェクトには、MetaObjectProtocolを拡張するMetaClassも含まれています。Groovy の動的機能の一部を提供するのは、このクラス階層です。これには、それ自体を内省する機能 (getProperties、getMethods) またはメソッドをインターセプトする機能 (invokeMethod、missingMethod) が含まれます。

また、Groovy で利用できるさまざまな種類のメタ プログラミングについても理解しています。これらにより、実行時またはコンパイル時に機能を追加またはオーバーライドできます。

  • ランタイム
    • カテゴリー
    • Expando / MetaClass / ExpandoMetaClass
  • コンパイル時間
    • AST 変換
    • 拡張モジュール

これで、この質問の要点にたどり着くことができます。誰かまたは本が Groovy の「メタオブジェクト プロトコル」を参照する場合、特定のクラスまたはもののコレクションについて話していることになります。定義されていない、または決まっていないものを理解するのに苦労します。私の本の1つはそれを次のように定義しました

プロトコルは、ルールとフォーマットの集まりです。Meta-Object-Protocol (MOP) は、メソッド呼び出しの要求が Groovy ランタイム システムによってどのように処理されるか、および中間層をどのように制御するかについての規則の集まりです。プロトコルの「形式」は、それぞれの API によって定義されます。

私は Venkat の Programming Groovy 2 という本も持っており、その中にはこのメソッド検索プロセスを定義する図があります。したがって、これがメソッドをリクエストする方法のルールであると推測しています(少なくともPOGO、POJOは異なることを理解しています)。

ここに画像の説明を入力

とにかく、私は正しい道を進んでいると思いますが、まだ「あはは」の瞬間を逃しているように感じます. 私が欠けているものについて誰かが私に記入してもらえますか? または、少なくとも、ここでのとりとめのない話が何らかの意味を成したことを教えてください:)ありがとう!!

0 投票する
1 に答える
133 参照

c++ - QApplication を作成する前に Qt メタタイプ システムを使用しても問題ありませんか?

Qt メタオブジェクト システムに型を登録する必要があるときはいつでも、次のコードを使用します。

*.h ファイル

*.cpp ファイル

このようにして、main() 関数が開始される前に、可能なすべての方法で MyType を登録します。それで、質問は

1) Qt MetaObject システム全体で QCoreApplication のインスタンスが必要ですか? 私のコードは偶然にも機能するのでしょうか?

2)私の醜い松葉杖(つまり、クラーククラス)を含まない良い解決策はありますか?

0 投票する
0 に答える
52 参照

java - 作成されたメタオブジェクトの数とタイプを確認するにはどうすればよいですか?

私が見た限りでは、メタオブジェクトのタイプはType-Info Data-InfoObjectCreatorです。
Java アプリケーションでは、作成されたメタオブジェクトの数とタイプをどのように決定するのでしょうか?
たとえば、次のサンプル コードを見てください。

型情報: Dtest オブジェクト、クラス オブジェクト
データ情報: 整数オブジェクトaPublicInt、整数オブジェクトaPrivateInt、無効オブジェクトOpD1、文字列オブジェクトOpD2
ObjectCreator Dtest

これは正しいです ?

メタオブジェクト間にどのような関係があるのか​​ 、誰か説明してもらえますか?