Nein, du musst überhaupt nicht zwei übergeben. Du übergibst entweder eine mit bind erzeugte std::function oder du deklarierst inline ein Lambda. Im Lambda kannst Du auch diverse Calls auf andere Member tätigen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
class Task
{
std::function<void(int)> m_onDone;
public:
Task(std::function<void(int)> onDone) : m_onDone(onDone)
{ }
void start()
{
//...
m_onDone(5);
}
};
class Scheduler
{
void doSomething() { ... }
void run()
{
Task task( [&](int id)
{
std::cout << "Task completed: " << id;
doSomething();
} );
task.start();
}
};
|
class Essen : public Apfel, public Birne
Kann es sein, dass Du einfach alles ignorierst, was wir schreiben? Absichtlich rumtrollen wird Dich hier auf Dauer nicht am Leben halten. Genauso werden wir nicht hinnehmen, wenn Du nicht willens bist zu lernen und auf das zu hören, was wir Dir erklären. Essen sollte niemals von Apfel und von Birne erben. Das ist Unsinn.