問題タブ [constructor-overloading]

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 投票する
1 に答える
485 参照

c# - WCFを介してクラスのオーバーロードされたコンストラクターを取得する方法は?

クラスでオーバーロードされたコンストラクターを WCF クライアント/コンシューマーに渡すにはどうすればよいですか?

基本的に、WCF は、私の B クラスにはデフォルトのみがあり、引数/空のコンストラクターはないと考えています。クライアントがオーバーロードされたコンストラクターを呼び出せるようにするにはどうすればよいですか?

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

c++ - 参照パラメーターの型に基づいてコンストラクターをオーバーロードできますか?

以下のようにコンストラクターをオーバーロードできないことはわかっています (唯一の違いは初期化リストです)。

しかし、コンストラクターを次のようにオーバーロードしたいとします。

つまり、別のパラメータ タイプに基づいてone as reference typeas normal type

私は私の古い質問を参照しています: クラスメンバー関数のオーバーロード

それは達成できますか?

私のコードは次のとおりです。

私が得ているエラーは次のとおりです。

オーバーロードされたコンストラクターの 2 つのバージョンを区別できるように、コンストラクターをキャストするにはどうすればよいですか?

0 投票する
2 に答える
872 参照

java - Java 7 API の FileInputStream の 2 つのオーバーロードされたコンストラクターについて興味深いこと

FileInputStream について説明する前に、オーバーロードされた 2 つの完全に有効なメソッドがあるにもかかわらず、コンパイラが混乱し、特定の入力に応答してコンパイル時エラーを報告するシナリオから始めます。

メソッドは次のとおりです。

メソッドの使用を示す完全なコードは次のとおりです。

int リテラル値は double 型の変数に渡すことができるため、どちらのメソッドもリテラル値2および3の候補として受け入れられるため、コンパイラはどちらのメソッドを選択するかを決定できません。

ここで、上記の概念を取り上げて、Java 7 API を FileInputStream クラスにさらに掘り下げ、そのクラスの 2 つのオーバーロードされたコンストラクターについて調べると、混乱します。

  1. public FileInputStream(String name) は FileNotFoundException をスローします {.....}
  2. public FileInputStream(File file) が FileNotFoundException をスローする {.....}

Java 7 API ソース コードによると、引数として String オブジェクトを取るバージョンの定義は次のとおりです。

ここで、「name」が実際に null の場合、this(name != null ? new File(name) : null); this(null)に評価されます。これは、 FileInputStream(null);の呼び出しと同等です。ただし、FileInputStream(String)FileInputStream(File)の両方が、null 値で呼び出される可能性のある選択肢になります。曖昧さを生みませんか?それで、そのためのコンパイル時エラーはありませんか?

最終的に FileNotFoundException が発生することは理解していますが、それは後で発生する別の問題です。その前に、あいまいさはどのように解決されますか?

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

c++ - 派生クラスでオーバーロードされたコンストラクター

基本クラスManagerと派生クラスWorkerがあり、継承が適切に機能しているようです-デフォルトのコンストラクターを使用して派生クラスの新しいオブジェクトを作成し、適切に出力できます。しかし、派生クラス ( ) のオーバーロードされたコンストラクターを作成したいのですWorkerが、コンパイル エラーが発生しているようです。答えを探すのに疲れましたが、見つかりませんでした。コンパイルでWorkerid、name、salary フィールドがないと表示されるのはなぜですか? 本で派生クラスを作成し、そのための ctors を作成しました。

Managerヘッダ:

Managercpp:

Workerヘッダ:

Workercpp:

0 投票する
1 に答える
360 参照

c++ - このコンストラクターのオーバーロードが機能しないのはなぜですか? (テンプレートと typedef が発生)

VS2012 をコンパイラとして使用しています。

まずtypedef、不足によるtemplate aliasing

次に、このクラスのオブジェクトをインスタンス化します。

次のようなクラスの例を使用します。

したがって、実際のケースは次のようになります。

しかし、コンパイラはエラーを出します:

コンパイラが 2 番目のコンストラクタを認識していないように見えますが、なぜですか?

余分なTYPE* pものは、コンパイラに実際の型を与える試みです。typedef型のようなものHvVector<TYPE>::rtは、明確に指定しない限り、テンプレート引数の型を推測できないためです。

編集:

で問題なく動作するオンライン テスト コードを次にgcc 4.8.1示します。これは VS2012 の問題だと思います: ideone.com/YawsaB