問題タブ [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.
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で将来修正されることを願っています。
c++ - 参照へのパラメーターとしてポインターを渡すときの C++ ポインター キャスト
私は興味があります:
以下とまったく同じ:
参考までthis->operator<
に、呼び出されるのは次のとおりです。
どちらがより「正しい」タイプで安全に使用できますか、実際の違いはありますか?
c++ - dynamic_cast が必要な場合
重複の可能性:
c++ の dynamic_cast
派生クラスを基本クラス ポインターに割り当てるこれら 2 つの方法の違いは何ですか?
c++ - 仮想ベースからのダウンキャストとクロスキャストのどちらが速いですか?
私はパフォーマンスについてあまり心配していないので、これはやや仮説的なものです。実際にどのオプションが一般的に最速/最も効率的か、またはまったく違いがないかどうか疑問に思っています。
オーバーロードをサポートするビジター テンプレートの次のコードがあるとします。
次に、これを使用して一般的な訪問者を作成します。
訪問者を使用すると、最終的にクロスキャストであるdynamic_cast<>
from Visitor
toになります。VTarget<T>
これを実装できるもう 1 つの方法は、仮想ベースを作成することですVisitor
。これにより、Visitor から直接継承する必要がなくなります。Visitor::visit コードのは、仮想ベースからのダウンキャストになります。VTarget<T>
MyVisitor
dynamic_cast<>
Visitor
キャストを実行するとき、あるメソッドは他のメソッドよりも高速ですか? それとも、仮想ベースを持つことでサイズのペナルティを受けるだけですか?
c++ - リファクタリングのアドバイス: この OO 設計で型チェックを回避する方法
クラスの設計を改善し、型チェックを回避するためのリファクタリングに関するアドバイスを探しています。
Command デザイン パターンを使用してメニュー ツリーを作成しています。メニューの項目にはさまざまな種類があります (たとえば、即時アクション [「保存」など]、状態に応じてチェック/アイコンを表示するトグル オン/オフ プロパティ [「斜体」など] など)。重要なことに、画面上の現在のメニューを (横に表示するのではなく)置き換えるサブメニューもあります。もちろん、これらのサブメニューには独自のメニュー項目のリストが含まれており、さらにネストされたサブメニューを持つことができます。
コードは次のようなものです(プレゼンテーションを簡単にするためにすべて公開されています):
メイン メニューは Menu の単なるインスタンスであり、サブメニューに出入りする方法を含め、別のクラスがメニューの位置を追跡します。
重要な関数は Position::OnEnterPressed() です。ここでは、MenuItem::IsMenu() への呼び出しで明示的な型チェックが行われ、派生型にキャストされます。タイプチェックとキャストを回避するためにこれをリファクタリングするためのいくつかのオプションは何ですか?
c++ - C++ での dynamic_cast の使用の代替
私はこれらのクラスを持っています:
私はこれをしたい:
うまくいかないので、これを回避するにはどうすればよいですか:
ありがとうございました。
編集:OK、すべての「バグ」が修正されました。
c++ - 動的キャストの進行が速い
少し前に、C++ での dynamic_cast の非常に優れたパフォーマンス アップグレードに関する非常に興味深い論文を見つけました: http://www2.research.att.com/~bs/fast_dynamic_casting.pdf。
基本的に、C++ の dynamic_cast は、継承ツリーの従来の研究よりも高速になります。この論文で述べられているように、この方法は、高速で一定時間の動的キャスト アルゴリズムを提供します。
この論文は 2005 年に発行されました。この技術がどこかで実装されたことがあるか、またはどこかに実装する計画があるかどうか疑問に思っています。
c++ - C ++ / Stroustrupからのdynamic_castの疑い:保護された基本クラスへの変換
私は次のコードがコンパイルエラーを与えることを知っています:
しかし、なぜC ++ Stroustrupの本(15.4.1)で彼はこう書いています
行はコンパイルエラーではありませんか?したがって、私のgccがコンパイルエラーとしてフラグを立てるのが間違っているか、考えられない、stroustrupのタイプミスか、おそらく私は何かを見逃しています...
c++ - dynamic_cast はどのように失敗しますか?
私が読んだことによると、実行時に間違った dynamic_cast を実行すると、bad_cast 例外がスローされるか、ゼロが返される可能性があります。
ポインタをキャストしている場合、ゼロを返すと言うのは正しいですか?
すなわち:
そして、オブジェクトをキャストするときに bad_cast 例外をスローしますか?
すなわち:
c++ - 関数から戻った後に RTTI 情報が失われる
クラスとサブクラスが与えられた場合:
メモは複製され、関数 f() 内のポインターに格納されます。型情報はポインターに保持され、dynamic_cast によって復元できます。
ここで、 f() から戻った後、型情報は失われます:
VS デバッガーは有効なポインター値 (変更されていない) を表示しますが、スコープ内にいる場合を除き、派生クラスは表示しませんf()
。
関数から戻るときにポインタの RTTI 情報が失われるのはなぜですか?