S
Stefano Sabatini
This is my solution for subject:
#include <string>
#include <iostream>
using namespace std;
class DumbThing {
public:
void sayFoo() { cout << "Foo!" << endl; }
static void sayFoo(DumbThing &t) {
t.sayFoo();
}
void sayBar() { cout << "Bar!" << endl; }
static void sayBar(DumbThing &t) {
t.sayBar();
}
};
struct ClassMethod {
string name;
void (*method)(DumbThing &);
};
int main(void) {
struct ClassMethod DumbThingMethods[] = {
{ "sayFoo", &DumbThing::sayFoo },
{ "sayBar", &DumbThing::sayBar }
};
int DumbThingMethodsNum = sizeof(DumbThingMethods) / sizeof(ClassMethod);
DumbThing t;
for (int i=0; i < DumbThingMethodsNum; i++)
DumbThingMethods.method(t);
return 0;
}
The problem with this solution is that I have to create for each
method a corresponding static function, can you contrive a solution
which doesn't require this?
Many thanks in advance for any advice.
#include <string>
#include <iostream>
using namespace std;
class DumbThing {
public:
void sayFoo() { cout << "Foo!" << endl; }
static void sayFoo(DumbThing &t) {
t.sayFoo();
}
void sayBar() { cout << "Bar!" << endl; }
static void sayBar(DumbThing &t) {
t.sayBar();
}
};
struct ClassMethod {
string name;
void (*method)(DumbThing &);
};
int main(void) {
struct ClassMethod DumbThingMethods[] = {
{ "sayFoo", &DumbThing::sayFoo },
{ "sayBar", &DumbThing::sayBar }
};
int DumbThingMethodsNum = sizeof(DumbThingMethods) / sizeof(ClassMethod);
DumbThing t;
for (int i=0; i < DumbThingMethodsNum; i++)
DumbThingMethods.method(t);
return 0;
}
The problem with this solution is that I have to create for each
method a corresponding static function, can you contrive a solution
which doesn't require this?
Many thanks in advance for any advice.