問題タブ [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.

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

objective-c - クラス名を引数としてココアのオブジェクトファクトリに渡すにはどうすればよいですか?

オブジェクトの小さなコレクションを追跡するために、オブジェクト ファクトリに取り組んでいます。オブジェクトはさまざまなタイプにすることができますが、それらはすべて および に応答しcreateInstanceますresetNSViewオブジェクトの一部は、 や などの組み込みココア クラスから派生する必要があるため、共通の基本クラスからオブジェクトを派生させることはできませんNSWindowController

次のように、目的のクラス名をファクトリに渡すだけで、適切なオブジェクトのインスタンスを作成できるようにしたいと考えています。

メソッドは次のmakeObjectOfClass:ようになります。

(CLASSNAME)className上記の引数で行ったように、クラス名をメソッドに渡す方法はありmakeObjectOfClass:ますか?

完全を期すために、すべてのオブジェクトを管理する理由を次に示します。を呼び出して、オブジェクトの完全なセットをワンショットでリセットできるようにしたいと考えています[factory reset];

0 投票する
6 に答える
69771 参照

c++ - 自明でないコンストラクターで共用体を初期化する

メンバーを 0 に初期化するカスタム コンストラクターを作成する構造があります。古いコンパイラで、リリース モードの場合、memset を 0 に設定しないと、値が初期化されないことがわかりました。

この構造体をユニオンで使用したいのですが、自明でないコンストラクターがあるためエラーが発生します。

では、質問 1. デフォルトのコンパイラが実装するコンストラクターは、構造体のすべてのメンバーが null 初期化されることを保証しますか? 重要なコンストラクターは、すべてのメンバーの memset を「0」にして、クリーンな構造を確保します。

質問 2: 基本構造でコンストラクターを指定する必要がある場合、その要素を含むように共用体を実装し、0 で初期化された基本要素を確保するにはどうすればよいですか?

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

c# - 基本コンストラクターを C# で強制的に呼び出すにはどうすればよいですか?

他のすべてのページが派生する BasePage クラスがあります。

この BasePage には、常に実行する必要があるコードを含むコンストラクターがあります。

次のように、派生クラスに基本コンストラクターを強制的に呼び出しさせたいと思います。

これを強制するにはどうすればよいですか (できればコンパイル時に)。

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

c# - コンストラクタからファクトリを呼び出して、「this」の新しいバージョンを取得します

私はこれについて逆方向に進んでいるかもしれません...ドキュメントのようなクラスとテンプレートのような別のクラスがあります。どちらも同じ基本クラスから継承され、テンプレートから新しいドキュメントを作成するメソッドがあります (または別のドキュメントから、基本クラスにあるメソッド)。したがって、テンプレートから新しいドキュメントを作成する場合は、テンプレートをインスタンス化して GetNewDoc() を呼び出すだけです。

Document クラスには、新しい空のドキュメントを作成する空のコンストラクターと、データベースからドキュメントをロードできるようにドキュメント ID を受け取る別のコンストラクターがあります。ただし、テンプレート ID を受け取るコンストラクターも必要です。こうすればできる

テンプレート クラスには既にドキュメントを返す機能があるため、コンストラクターに次のようなことをさせたいと思います。

もちろん、「これ」は読み取り専用であるため、これを行うことはできません。とにかく奇妙に感じます。私はここで非常にばかげていると感じているので、気軽に叫んでください:)

問題は、問題のオブジェクトが子オブジェクトのいくつかのコレクションと複数のテーブルにわたるデータベースの永続性で非常に複雑であるため、あまり多くのコードを複製したくないということです。ただし、テンプレートから新しいドキュメントを取得し、フィールド/プロパティをコピーするだけで、コレクションが簡単にフォローできるようになると思います-重複のように思えます.

より精巧なコード例:

0 投票する
13 に答える
727 参照

c++ - C++ コンストラクターのコーディング エラー

レガシーコードでこのバグに出くわしました:

警告なしで正常にコンパイルされますが、コンストラクター名のスペルが間違っているため、動作は意図したものではありませんでした。これだけで「関数は値を返さない」という警告が表示されますが、自動操縦を使用していて、これを「修正」するために「void」戻り値の型を追加したと思います。

さて、バグ修正は簡単でしたが、私の質問はこれです:-

この種のバグの再発を防ぐには、どのような手法を使用できますか?

一部の言語では、明示的な「コンストラクター」キーワードが必要であり、この問題が明らかになるはずです。単体テストでも、明らかにそれをキャッチする必要がありました。他に何ができますか?

0 投票する
10 に答える
53363 参照

.net - 各テストを準備するために、TestInitialize またはテスト クラス コンストラクターを使用しますか? なぜ?

この質問は、MSTest を使用した Visual Studio での単体テストに関するものです (MSTest の実行順序のため、これは重要です)。[TestInitialize] とマークされたメソッドとテスト クラス コンストラクターの両方が、各テスト メソッドの前に実行されます。

では、質問は、これらの各領域で何をする傾向があるかということです。どちらかで特定の活動を行うことを避けますか? あなたの理由は何ですか: スタイル、技術、迷信?

0 投票する
8 に答える
24037 参照

c# - C# でオーバーライドされたコンストラクターとベース コンストラクターを呼び出す

次のようなコンストラクターを持つ 2 つのクラス、Foo と Bar があります。

ここで、int を取る Bar のコンストラクターを導入したいと思いますが、Bar() で発生するものと Foo(int) のものを実行したいと考えています。このようなもの:

C#でこれを行う方法はありますか? これまでのところ、Bar() によって行われた作業を Bar(int) によっても呼び出される関数に入れるのが最善ですが、これはかなり洗練されていません。

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

c++ - メンバーは、どのクラス インスタンスで構築されているかをどのように知ることができますか?

x のコンストラクターが、構築しているC のインスタンスを 暗黙のうちに知るエレガントな方法はありますか?


私は、いくつかの汚れた洗練されていない機械でそのような動作を実装しました。これは、sqlite3 ラッパーに必要です。私が見たすべてのラッパーが好きというわけではありません.API IMOは醜く不便です. 私はこのようなものが欲しい:

code>

I want to clarify the fact - it is a part of the working code. You can do this in C++. I just want to do it in a more nice way.


I've found a way to get rid of unlock and try block. I've remembered there is such a thing as thread local storage. Now I can write constructor as simple as that:


to dribeas: My objective is to avoid redundant and tedious typing. Without some tricks behind the scene I will have to type for each Field and Param:

それは冗長で、醜く、不便です。たとえば、SELECT の途中で新しいフィールドを追加する必要がある場合は、すべての列番号を書き直す必要があります。あなたの投稿に関するいくつかのメモ:

  1. フィールドと Params、デフォルトのコンストラクターによって初期化されます。
  2. コンストラクター内の初期化子の順序は関係ありません。フィールドは常に宣言順に初期化されます。この事実を使用して、フィールドの列インデックスを追跡しました
  3. 基本クラスが最初に構築されます。したがって、Fields が作成されると、Recordset の内部フィールド リストは、Filed の既定のコンストラクターで使用できるようになります。
  4. ここではRAIIを使用できません。Recorset コンストラクターでロックを取得し、すべての Fields が構築された後に TestRecordset コンストラクターで強制的に解放する必要があります。
0 投票する
7 に答える
3873 参照

c# - : C# コンストラクターの this(foo) 構文?

ときどき、見たことはあっても使ったことのない構文に出くわします。これはそれらの時間の 1 つです。

C#コンストラクターメソッドに続く「:this」または「:base」の目的を誰かが説明できますか?

例えば:

私の直感では、デフォルト引数を別のコンストラクター メソッドにマップするために使用されます。

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

php - Php5でコンストラクターをオーバーロードするにはどうすればよいですか?

私は2つのコンストラクターを持っています:

しかし、これは機能していませんか?このバージョンの PHP ではオブジェクト指向ではないはずなのでしょうか? (私はPHP4から移行したばかりです)