問題タブ [private-constructor]
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++ - コンストラクターをプライベートに宣言することと =delete を宣言することの違いはどれですか?
たとえば、クラスを宣言したいが、クライアントがコピー コンストラクター (またはコピー代入演算子) を使用できないようにしたい
次の 2 つのどちらも、コピー コンストラクターの使用を許可しません。
1.
2.
これらの方法の 1 つは、他の方法よりも「より正確」ですか、それとも同等ですか? 副作用はありますか?
c++ - C++ で適切にダウンキャストする方法
何らかの理由で、プライベート コンストラクターを呼び出す静的メソッドによって作成されたオブジェクトがあります。(シングルトンではありません)
より多くのメンバーと関数を持つ最初のオブジェクトから派生した新しいオブジェクトを作成したいと考えています。
ただし、静的メソッドはfirstObject*
オブジェクトを返すため、ダウンキャストを使用して作成するとsecondObject*
メモリオーバーフローが発生するため、問題があります。
私は何をすべきか?最初のオブジェクトのコードにアクセスできますが、そのコンストラクターを変更することはできません (変更すると、巨大な記述コードを変更する必要があります)。
編集:
すべての回答者に感謝します。コンストラクターを保護するように変更できます。
c++ - GMOCK を使用してプライベート コンストラクターを持つクラスをモックする
プライベート Ctor、Dtor、および 1 つの getInstance() メソッドを持つ Singleton クラスがあります。
GMOCK を使用してこのクラスをモックする必要があります。それを嘲笑する方法はありますか。
scala - マクロでのプライベート コンストラクターの使用
マクロでプライベート コンストラクターを使用したい。この例は正の整数ですが、基本パターンは偶数などの他の数値型だけでなく、電子メール アドレスやディレクトリ名などの文字列から派生した型にも使用できます。コンストラクターを非公開にすることにより、ユーザーは不正な型を作成する機会を拒否されます。次のコードがあります。
ただし、PosInt コンストラクターをプライベートにすると、マクロは期待どおりにコンパイルされますが、マクロを使用しようとするとエラーが発生します。式ツリーを手動で構築する方法を見つけることはできませんが、とにかくそれが役立つかどうかはわかりません. とにかく私はこれを行うことができますか?
PosInt が値クラスでない場合でも、プライベート コンストラクターを使用することはできません。値クラスを使用しない回答を受け入れます。値クラスの欠点は、型が消去されることです。さらに、2次元座標のサブセットのように私が興味を持っているクラスは、とにかく値クラスとして実装できません。私は実際には正の整数には興味がありません。単純なテストベッドとして使用しているだけです。Scala 2.11M5 を使用しています。Scala 2.11 には quasiquotes 機能が追加されます。quasiquotes の使用方法についてはまだ考えていません。現時点でのすべての資料は、私が持っていない Macro Paradise に精通していることを前提としているようです。
c++ - C ++プライベートコンストラクターを持つクラスの静的メンバーを定義する方法は?
私は C++ で Java 列挙型を模倣しようとしているので、次のようなコードを作成しました (もちろん、質問に関係のないものはすべて削除しました)。
MyEnum.hpp
enum 値の唯一のインスタンスが BaseEnum の静的メンバーになるように、コンストラクターを非公開にしました。それらを定義する方法は?
MyEnum.cpp
これは私に与えます
編集:それは単純すぎました。MyEnym:: を値に追加するのを忘れました。Java から C++ に戻ったときに遭遇する多くの小さな問題の 1 つです。また、私の質問のコードでは、元のコードにあったフレンド宣言を追加するのを忘れていました。回答ありがとうございます。
scala - Scala ケース クラスのプライベート コンストラクターだが、パブリックの適用メソッド
プライベート コンストラクターを持つ次のケース クラスがあり、コンパニオン オブジェクトの apply-method にアクセスできない場合。
プライベート コンストラクターでケース クラスを使用し、生成された適用メソッドをコンパニオン パブリックに保持する方法はありますか?
私は、2 つのオプションに (私の例では) 違いがないことを認識しています。
しかし、最初のオプションを禁止したいと思います。
- 編集 -
驚くべきことに、次のように動作します (しかし、実際には私が望むものではありません):
java - デフォルト コンストラクターを持つ抽象クラスとプライベート コンストラクターを持つクラスの違い
デフォルトのコンストラクターを持つ抽象クラスとプライベート コンストラクターを持つクラスの違いは何ですか?
また、別の疑問があります。以下のこのプログラムを検討してください。誰でも私に説明してもらえますか?そのようなコードは役に立ちますか?