Getting below error for the code given below. Trying to have 3 std::function inside an template class and then initialize them with different functions from different classes.
Why is this error happening? What's wrong with below code?
template <typename T>
class CFuntion {
public:
std::function<void()> callback_1;
std::function<void()> callback_2;
std::function<void()> callback_3;
template <typename A, typename B, typename C>
CFuntion(A cb1, B cb2, C cb3)
: callback_1(cb1), callback_2(cb2), callback_3(cb3)
{ }
};
class Impl1 {
public:
void do_something1() {
cout << "Inside Impl1 do_something1" << endl;
}
void do_something2() {
cout << "Inside Impl1 do_something2" << endl;
}
};
class Impl2 {
public:
void do_something1() {
cout << "Inside Impl2 do_something1" << endl;
}
void do_something2() {
cout << "Inside Impl2 do_something2" << endl;
}
};
class Impl3 {
public:
void do_something1() {
cout << "Inside Impl3 do_something1" << endl;
}
void do_something2() {
cout << "Inside Impl3 do_something2" << endl;
}
};
int main()
{
unique_ptr<CFuntion<void>> ptr1 = make_unique<CFuntion<void>>(std::bind(&Impl1::do_something1, &Impl2::do_something1,
&Impl3::do_something2));
ptr1->callback_1();
ptr1->callback_2();
ptr1->callback_3();
system("pause");
return 0;
}
Aucun commentaire:
Enregistrer un commentaire