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'加上'A()=默认;'在'公共'部分。 –
@πάνταῥεῖ但它会使用'A(int y)'构造函数吗? –
@πάνταῥεῖ我不需要'C++ 11' –