問題タブ [private-inheritance]
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++ - プライベート継承でのオブジェクトのスライス
プライベート継承でオブジェクトのスライスが行われないのはなぜですか? そのような場合に Static_cast はエラーになりますか? private 継承は、その継承クラス間に「is - a」関係を保持しないことを理解しています。派生はベース型ではないため、コンパイラは暗黙的な変換を行わないように強制しているため、これはスライシングと関係がありますか?
c++ - C ++での構成を使用したオブジェクトのインスタンス化のクーティング
More effective C++ Meyers は、オブジェクト カウント基底クラスを使用してオブジェクトのインスタンス化をカウントする方法を説明しています (項目 26)。以下のような構成手法を使用して同じことを実装することは可能ですか? プライベート継承を使用する特定の利点はありますか?この場合、コンポジションを使用することの欠点は何ですか?
ps:- より効果的な C++ のコードを少し変更して再利用しました。
c++ - Visual C++ で auto_ptr がプライベート継承に違反しているように見えるのはなぜですか?
背景情報: これは Visual Studio 2008 で検出され、Visual Studio 2013 で再度確認されました。G++ はコードで叫びましたが、Visual はプライベート継承違反を黙って受け入れました。
したがって、Visual C++ では、次のコードがあります。
最初の (一時的な) auto_ptr がコンパイルされるのはなぜですか? 私はデバッグでその中に行きました.パブリック継承で行うべきことを正確に行いました(正しいコンストラクタを呼び出すなど).
問題が auto_ptr の実装にあるのではないかと考えて (わかりません...)、次のスタンドアロン コードで問題を減らしました。
繰り返しますが、Derived は Base から非公開で継承されるため、コードがコンパイルされないことを期待していました。
しかし、一時的に作成すると機能します。
そして、それを std::auto_ptr のせいにすることはできません。
標準 (98 または 11 または 14) に見逃しているものはありますか、それともバグですか?
c++ - プライベートに継承されたメソッドを使用して純粋仮想メソッドをオーバーライドするにはどうすればよいですか?
私は次のものを持っています:
Concrete
純粋仮想メソッドAbstractMethod
がオーバーライドされていないため、インスタンス化できません。私は何を間違っていますか?
c++ - enable_shared_from_this を使用したクラスと構造体
質問があります。と遊んでいてenable_shared_from_this
、奇妙なことに気づきました。この例は正常に動作します:
しかし、変更struct
するclass
とコンパイルが停止します。
エラーは言う:
なぜそうなのか、誰にも手がかりがありますか?
c++ - SFINAE としての 'using' 宣言
using
テンプレートクラスからプライベートに派生している間、宣言にSFINAE (または別の手法) を使用できますか? 理解を深めるために、以下のコードを参照してください。
どうすれば望ましい動作に到達できますか (可能な場合)?