稍后在c ++中实现一般方法

时间:2013-05-19 19:33:19

标签: c++

我知道下面的代码无法编译,但无论如何我发布了它,因为它举例说明了我要完成的任务。

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。我怎么能这样做?

2 个答案:

答案 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()拨打电话。