我知道以下代码不会编译,但是无论如何我都将其发布了,因为它例证了我要完成的工作。

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。我怎样才能做到这一点?

最佳答案

例如:

#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

关于c++ - 稍后在c++中实现通用方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16638633/

10-13 06:30