問題タブ [dynamic-cast]

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 投票する
4 に答える
6027 参照

python - types.CodeType()python呼び出しの引数は何ですか?

私は現在、Python用の独自の「マーシャル」コードをロールバックしようとしています。これにより、コンパイルされたPythonコードをGoogle App Engineに保存して、動的な方法でスクリプトを提供できます。ご存知のとおり、「marshal」はGAEでサポートされておらず、「pickle」はコードオブジェクトをシリアル化できません。

でコードオブジェクトを作成できることがわかりましたtypes.CodeType()が、12個の引数が必要です。

私が試した限り、この呼び出しに関するドキュメントは見つかりませんでした。コードオブジェクトを作成する必要があるので、それを実行できexec()ます。私の質問は、この「コンストラクター」のパラメーターや、それを内省する方法を知っている人はいますか?types.CodeType()ここでinfo()定義した関数を使用しましたが、一般的な情報だけを吐き出します!

クイックFAQ:

  • Q:なぜコードをコンパイルするのですか?
  • A:Google App EngineではCPU時間に実際の費用がかかり、CPUサイクルのすべてのビットでカウントを節約できます。
  • Q:「マーシャル」を使ってみませんか?
  • A:これはGoogleAppEngineでサポートされていないモジュールの1つです。
  • Q:「ピクルス」を使ってみませんか?
  • A:Pickleは、コードオブジェクトのシリアル化をサポートしていません。

アップデート

Google App Engineインフラストラクチャでは、2011年7月7日の時点でコードオブジェクトのインスタンス化が許可されていないため、ここでの私の議論は議論の余地があります。これがGAEで将来修正されることを願っています。

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

c++ - 参照へのパラメーターとしてポインターを渡すときの C++ ポインター キャスト

私は興味があります:

以下とまったく同じ:

参考までthis->operator<に、呼び出されるのは次のとおりです。

どちらがより「正しい」タイプで安全に使用できますか、実際の違いはありますか?

0 投票する
4 に答える
2500 参照

c++ - dynamic_cast が必要な場合

重複の可能性:
c++ の dynamic_cast

派生クラスを基本クラス ポインターに割り当てるこれら 2 つの方法の違いは何ですか?

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

c++ - 仮想ベースからのダウンキャストとクロスキャストのどちらが速いですか?

私はパフォーマンスについてあまり心配していないので、これはやや仮説的なものです。実際にどのオプションが一般的に最速/最も効率的か、またはまったく違いがないかどうか疑問に思っています。

オーバーロードをサポートするビジター テンプレートの次のコードがあるとします。

次に、これを使用して一般的な訪問者を作成します。

訪問者を使用すると、最終的にクロスキャストであるdynamic_cast<>from Visitortoになります。VTarget<T>

これを実装できるもう 1 つの方法は、仮想ベースを作成することですVisitor。これにより、Visitor から直接継承する必要がなくなります。Visitor::visit コードのは、仮想ベースからのダウンキャストになります。VTarget<T>MyVisitordynamic_cast<>Visitor

キャストを実行するとき、あるメソッドは他のメソッドよりも高速ですか? それとも、仮想ベースを持つことでサイズのペナルティを受けるだけですか?

0 投票する
5 に答える
621 参照

c++ - リファクタリングのアドバイス: この OO 設計で型チェックを回避する方法

クラスの設計を改善し、型チェックを回避するためのリファクタリングに関するアドバイスを探しています。

Command デザイン パターンを使用してメニュー ツリーを作成しています。メニューの項目にはさまざまな種類があります (たとえば、即時アクション [「保存」など]、状態に応じてチェック/アイコンを表示するトグル オン/オフ プロパティ [「斜体」など] など)。重要なことに、画面上の現在のメニューを (横に表示するのではなく)置き換えるサブメニューもあります。もちろん、これらのサブメニューには独自のメニュー項目のリストが含まれており、さらにネストされたサブメニューを持つことができます。

コードは次のようなものです(プレゼンテーションを簡単にするためにすべて公開されています):

メイン メニューは Menu の単なるインスタンスであり、サブメニューに出入りする方法を含め、別のクラスがメニューの位置を追跡します。

重要な関数は Position::OnEnterPressed() です。ここでは、MenuItem::IsMenu() への呼び出しで明示的な型チェックが行われ、派生型にキャストされます。タイプチェックとキャストを回避するためにこれをリファクタリングするためのいくつかのオプションは何ですか?

0 投票する
5 に答える
919 参照

c++ - C++ での dynamic_cast の使用の代替

私はこれらのクラスを持っています:

私はこれをしたい:

うまくいかないので、これを回避するにはどうすればよいですか:

ありがとうございました。

編集:OK、すべての「バグ」が修正されました。

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

c++ - 動的キャストの進行が速い

少し前に、C++ での dynamic_cast の非常に優れたパフォーマンス アップグレードに関する非常に興味深い論文を見つけました: http://www2.research.att.com/~bs/fast_dynamic_casting.pdf

基本的に、C++ の dynamic_cast は、継承ツリーの従来の研究よりも高速になります。この論文で述べられているように、この方法は、高速で一定時間の動的キャスト アルゴリズムを提供します。

この論文は 2005 年に発行されました。この技術がどこかで実装されたことがあるか、またはどこかに実装する計画があるかどうか疑問に思っています。

0 投票する
3 に答える
725 参照

c++ - C ++ / Stroustrupからのdynamic_castの疑い:保護された基本クラスへの変換

私は次のコードがコンパイルエラーを与えることを知っています:

しかし、なぜC ++ Stroustrupの本(15.4.1)で彼はこう書いています

行はコンパイルエラーではありませんか?したがって、私のgccがコンパイルエラーとしてフラグを立てるのが間違っているか、考えられない、stroustrupのタイプミスか、おそらく私は何かを見逃しています...

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

c++ - dynamic_cast はどのように失敗しますか?

私が読んだことによると、実行時に間違った dynamic_cast を実行すると、bad_cast 例外がスローされるか、ゼロが返される可能性があります。

ポインタをキャストしている場合、ゼロを返すと言うのは正しいですか?

すなわち:

そして、オブジェクトをキャストするときに bad_cast 例外をスローしますか?

すなわち:

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

c++ - 関数から戻った後に RTTI 情報が失われる

クラスとサブクラスが与えられた場合:

メモは複製され、関数 f() 内のポインターに格納されます。型情報はポインターに保持され、dynamic_cast によって復元できます。

ここで、 f() から戻った後、型情報は失われます:

VS デバッガーは有効なポインター値 (変更されていない) を表示しますが、スコープ内にいる場合を除き、派生クラスは表示しませんf()

関数から戻るときにポインタの RTTI 情報が失われるのはなぜですか?