2
以下では、派生クラスのコンストラクタ引数の型に基づいてコンパイラによって生成される基底クラスのコンストラクタを使用しないでください。派生クラスのコンストラクタの引数型に応じた基本クラスのテンプレートのインスタンス化
はtemplate <class T>
class foo
{
int a;
public:
foo(T a){}
// When I convert the constructor to a function template, it works fine.
// template <typename T> foo(T a){}
};
class bar : public foo<class T>
{
public:
bar(int a):foo(a){}
};
int main(void)
{
bar obj(10);
system("pause");
return 0;
}
エラーC2664: 'FOO :: FOO(T)': 'T'
に「int型からパラメータ1を変換することができない私は、エラーを理解するが、なぜそれがありますか?
f 'foo'の 'T'は' bar'テンプレートパラメータも 'foo'テンプレートパラメータであると言っています。私は正しいですか? –
Mahesh
@Maheshはい、 'bar'は 'foo 'から継承します –
icecrime