0
テンプレート関数change
には、int
をとり、タイプがA
のオブジェクトを返す関数があります。だから、私はA
カスタムコンストラクタをテンプレート関数として使用する
class A {
int y;
public:
explicit A(int y) : y(2 * y) {
}
};
class B {
A x;
public:
B(int x) : x(x) {
}
template<typename F>
void change(int y, F func) {
x = func(y);
}
};
int main(void) {
B b(7);
b.change(88, A()); // << here
return 0;
}
のコンストラクタを使用することができると思った。しかし、コンパイラはno matching function for call to ‘A::A()’
どのように私はそれが動作することができます言いましたか?
' A(追加)=デフォルト; '' public'セクションで。 –
@πάνταῥεῖしかし、 'A(int y)'コンストラクタを使用しますか? –
@πάνταῥε '私は' C++ 11 'なしで必要です –