У меня есть функция шаблона 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() = по умолчанию ; 'в разделе' public'. –
@ πάνταῥεῖ, но будет ли он использовать конструктор 'A (int y)'? –
@ πάνταῥεῖ Мне нужно без 'C++ 11' –