我知道下面的代码无法编译,但无论如何我发布了它,因为它举例说明了我要完成的任务。
typedef struct {
void actionMethod();
}Object;
Object myObject;
void myObject.actionMethod() {
// do something;
}
Object anotherObject;
void anotherObject.actionMethod() {
// do something else;
}
main() {
myObject.actionMethod();
anotherObject.actionMethod();
}
基本上我想要的是某种代表。有没有简单的方法来做到这一点?
我不能包含<functional>
标头并使用std::function
。我怎么能这样做?
答案 0 :(得分:1)
例如:
#include <iostream>
using namespace std;
struct AnObject {
void (*actionMethod)();
};
void anActionMethod() {
cout << "This is one implementation" << endl;
}
void anotherActionMethod() {
cout << "This is another implementation" << endl;
}
int main() {
AnObject myObject, anotherObject;
myObject.actionMethod = &anActionMethod;
anotherObject.actionMethod = &anotherActionMethod;
myObject.actionMethod();
anotherObject.actionMethod();
return 0;
}
输出:
This is one implementation
This is another implementation
答案 1 :(得分:1)
给Object
一个函数指针成员:
struct Object {
void (*actionMethod)();
};
这里,成员actionMethod
是一个指向函数的指针,该函数不带参数并且不返回任何内容。然后,假设您有一个名为foo
的函数,您可以将actionMethod
设置为指向该函数,如下所示:
Object myObject;
myObject.actionMethod = &foo;
然后您可以使用myObject.actionmethod()
拨打电话。