問題タブ [virtual]
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++ - エレガントなオブジェクトの比較
(同じ型の) 2 つのオブジェクトを比較する場合、同じクラスの別のインスタンスを取る比較関数を使用することは理にかなっています。これを基本クラスの仮想関数として実装すると、関数のシグネチャは派生クラスの基本クラスも参照する必要があります。これに取り組むエレガントな方法は何ですか?Compare は仮想であってはなりませんか?
keyboard - Symbian S60 第 5 版の仮想キーボード: どの API を使用しますか?
Symbian S60 第 5 版で仮想キーボードを開く方法 (つまり、どの API を使用するか) を教えてください。ドキュメントには、これに関する情報がないようです。
apache-flex - Flex 3 の virtual キーワードはパフォーマンスに影響を与えますか?
タイトル通り本当に。virtual キーワードはパフォーマンス ヒットを引き起こしますか?
c# - 「保護された仮想」メソッドが多すぎることはありませんか?
大規模なプロジェクトや API/フレームワークの設計の経験がある方に質問です。
私は将来、他の多くのプロジェクトで使用されるフレームワークに取り組んでいるので、それを素晴らしく拡張可能にしたいと考えていますが、同時にシンプルで理解しやすいものにする必要があります。
多くの人が、.NET フレームワークに含まれるシール クラスとプライベート メンバーが多すぎると不満を漏らしていることを知っています。この批判を避けて、すべての保護された仮想メンバーですべてのクラスを開く必要がありますか?
できるだけ多くのメソッドとプロパティを保護された仮想にするのは良い考えですか? どのような状況で、保護された仮想を避け、メンバーを非公開にしますか?
asp.net - リモート共有を指す仮想フォルダー経由でデータベースにアクセスするにはどうすればよいですか
リモート サーバー上にあるデータベースへのアクセスに問題があります。
データベースに接続しようとしている ASP.NET 2.0 Web ページがあります。
データベースには、(IIS で設定した) 仮想フォルダーを介してアクセスします。
仮想フォルダは、データベースを含むリモート共有を指しています。
仮想フォルダー (Web アプリのルート ディレクトリ内) は、UNC パス経由でリモート サーバー上の共有を指しています。
仮想フォルダには、「読み取り」および「参照」権限が「true」に設定されています。
接続文字列を web.config の「appSettings」セクションに保存します。
接続オブジェクトは、.aspx ページで宣言されています。
接続オブジェクトを使用しようとするコードは次のとおりです。
上記のコードを実行すると、次のエラーが発生します (コード 'objConnVirtual.Open()' のこの行:
Exception Details: System.Data.OleDb.OleDbException: Not a valid file name.
データベース名を確認しましたが、正しいです(確認するためにコピー/貼り付けしても)
接続文字列の「データ ソース」セクションをブラウザのアドレス バーに入力すると、リモート サーバー上の共有の内容を正常に表示できます。
これが権限の問題なのか、コードの問題なのかはわかりません。
私はこれからがらくたをグーグルで検索しましたが、解決策を見つけることができませんでした。
どんな助けでも大歓迎です。
c++ - 関数宣言に「仮想」修飾子がありません
いくつかの古いコードを調べているときに、次のようなものに出くわしました。
コードは警告なし (レベル 4) で正常にコンパイルされ (MS VS2008)、期待どおりに動作しFunc
ます。派生クラスに仮想修飾子がありませんが、仮想です。さて、混乱を招く以外に、このコードには危険がありますか、virtual
それとも修飾子を追加してすべてを変更する必要がありますか?
c# - C#は、サブクラスインスタンスであることを知らずに、オーバーライドされたサブクラスメソッドを呼び出します
仮想メソッドを持つ基本クラスと、そのメソッドをオーバーライドする複数のサブクラスがあります。
これらのサブクラスの1つに遭遇したとき、オーバーライドされたメソッドを呼び出したいのですが、サブクラスの知識がありません。これを行うための醜い方法(値をチェックしてキャストする)を考えることはできますが、言語で行う方法があるはずです。リストに同じリスト内に複数のサブクラスを含めたいのですが、そうでなければ、明らかにリストを作成することができます。
編集:間違っていたコードのコメントを修正しました。これは、私が得た非常に適切な最初の答えにつながりました:)
例えば:
c++ - 仮想が機能しない場合
現在、C++クラスで奇妙なエラーが発生しています。新しい仮想関数を追加したActiveXラッパークラス(wxWidgetsの一部として)があります。ActiveXクラス(wxIEHtmlWin)を継承する別のクラスがありますが、ActiveXクラスは、それをオーバーライドするwxIEHtmlWinの関数ではなく、常に独自の関数を呼び出します。
なぜこれが起こっているのか理解できません。関数を純粋仮想にしましたが、関数呼び出しを実行するとプログラムがクラッシュしますが、それ以外の場合は正常にコンパイルされます。仮想機能を無効にする方法はありますか、またはVisual Studioにバグを見つけましたか?
ActiveXクラス
wxIEHtmlWinクラス
編集:別のテスト関数(intを返す)を追加しましたが、それでも失敗します。
問題のコードへのリンク:http://lodle.net/public/iebrowser.rar
編集:
以下の答えのおかげで、私はそれを機能させることができました。私がしたことは、2つの部分でactivexクラスを作成することでした(提案されたように)が、wxIEHtmlWinでは、コンストラクターコードの2番目の部分を呼び出しました。そのようです:
これで、wxWidgetsが2つの部分からなる構造をサポートする理由がわかりました。
c++ - C++で抽象基本クラスにする静的関数を持つクラス
次のようなユースケースがあります
fooを抽象基本クラスにしたいのですが、仮想関数を静的にすることはできないため、makeをこの抽象ベースに含めることはできません。
このような
抽象クラスでメソッドを非静的にするか、派生クラスに静的メソッドを持たせることは、設計の観点から優れたアプローチです。
c++ - 基本クラスからの仮想関数呼び出し
私たちが持っているとしましょう:
g()
から呼び出されるのはどれBase::f()
ですか? Base::g()
またはDerived::g()
?
ありがとう...