0

次のコードがコンパイルされないことはわかっていますが、私が達成しようとしていることを例示しているので、とにかく投稿しました。

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。これどうやってするの?

4

2 に答える 2

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
于 2013-05-19T19:57:30.313 に答える