0
現在、引数を取らないコンストラクタを持つテンプレートクラスがあります。問題は、テンプレートで使用されているクラスに、コンパイルエラーを返す空のコンストラクタがないことがあることです。私はおそらくTへのREFを取る第二のコンストラクタを追加し、その後、Tはデフォルトコンストラクタを持っていない場合、パラメータなしのコンストラクタを削除するenable_if使用して使用するのではと思ってきましたが、私はもしわからないデフォルトコンストラクタを持たないテンプレートのコンストラクタ
template <typename T>
class A
{
public:
T Thing;
int number;
A():number(5) {}
};
class B
{
public:
int a;
B(int _a):a(_a) {}
}
A<int> a1; // This is fine
A<B> a2; // This is not fine since B has no default constructor
それはうまくいくでしょう。他のオプションはありますか?
私は、Bのインスタンスを不明な状態にしたくないので、クラスBにデフォルトのコンストラクタを追加したくないことに注意してください。
"うまくいくかどうかわからない"場合は、試してみてください。 – Jesin
あなたはどのような問題を解決しようとしていますか?これはX、Yの問題のようです。 –
私はenable_ifがどのように見えるかわからないので、試してみました。 – bpeikes