4

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

   explicit MyClass(size_t num);
   template<class T> MyClass(T myObj);

そして、私が作るときはいつでもそれが欲しい

MyClass obj( 30 );

最初のコンストラクターが呼び出され、

そして、暗黙のコンストラクターと

MyClass obj = 30;

2 番目の ctor が呼び出されます。

どうすれば実現できますか?

4

2 に答える 2

7

30 は符号付き整数値であるため、最初のコンストラクターのシグネチャと完全には一致しません (したがって、テンプレートがインスタンス化されます)。

を受け入れるように明示的なコンストラクターの署名を変更して、明示的なコンストラクターをint呼び出すMyclass obj( 30 );30u、明示的な署名と一致するように呼び出すことができます。

于 2012-12-17T10:17:21.947 に答える