4
template <typename T>
class MyClass
{
public:
MyClass(const MyClass& other)
{
//Explicit, types must both match;
}
template <typename U>
MyClass(const MyClass<U>& other)
{
//Implicit, types can copy across if assignable.
//<?> Is there a way to make this automatically happen for memberwise
//copying without having to define the contents of this function?
this->value = other.getValue();
}
privte:
T value;
};
次の場合は、真のようになります。
MyClass<float> a;
MyClass<float> b = a; //Calls explicit constructor which would have been auto-generated.
MyClass<int> c;
MyClass<float> d = c; //Calls implicit constructor which would not have been auto gen.
私の質問は:このような暗黙のコピーコンストラクタを取得する方法があるが、ありませんどのように動作するかを定義しなければなりませんか?デフォルトでクラスが作成されるときには、コピー、代入、および標準コンストラクタがすべて提供されます...可能であれば、テンプレートを使用する場合には暗黙のコンバージョンコンストラクタを自由に得ることができればうれしいでしょう。
私はそれは不可能だと思っていますが、誰かがなぜそれが私に当てはまるのか説明することができますか?
ありがとうございます!
今後、Cプログラミング言語に関連する質問にのみCタグを入れてみてください。 – nmichaels
私は、コンパイラが暗黙のコピーを許可するのではないかと疑います。結局のところ、クラスは継承の意味では関係していません。 – Vlad