2

タイトルが私の目標を強調しているかわからない.

コンパイル時にメソッドを動的に呼び出すことはできますか? 例えば:

int CallMethod(string methodName, string methodArg)
{
    Foo foo;
    return foo.#methodName(methodArg);
}

CallMethod("getValue", "test"); // This would attempt to call on a Foo instance, method getValue with argument "test" -- foo.getValue("test");

ありがとう!

4

2 に答える 2

4

マクロを作成できます:

#define CallMethod(methodName, var) { Foo foo; foo.##methodName(var); }

主な機能で:

CallMethod(foo,"test");
于 2012-12-19T10:04:57.197 に答える
4

これはリフレクションであり、C++ ではネイティブに使用できません

可能な値の数が限られている場合は、にmethodName基づいて適切な関数を呼び出すルックアップ テーブルを作成できますがmethodName、このシステムでは任意の関数を呼び出すことはできません。

これは、@PaperBirdMaster が示唆する std::map または巨大なif-elseチェック セットのいずれかです。しかし、これは真のリフレクションではなく、同じものを大雑把に錯覚しただけです。

于 2012-12-19T10:02:37.367 に答える