1

[=]ラムダは、構文を使用して作成されたコンテキストからメンバーをキャプチャできます。thisポインターのような状態参照がラムダに格納されている必要があると思います。

class Class
{
public:
    void Function()
    {
        /*
         * pass this lambda expression as parameter to another
         * function and from there recover the this pointer which
         * would be of the type Class* for further usage.
         */

        [=](int)->int { /* do something with this->Member */ }
    }
private:
    int Member;
};

ラムダ式から参照ポインタを取得する方法はありますか?

4

3 に答える 3

4

いいえ、取得した値や参照をラムダ オブジェクトから復元することはできません。

ラムダ型にはパブリック データ メンバーがなく、パブリック メンバー関数は、関数呼び出し演算子、コンストラクター、デストラクター、代入演算子、および何もキャプチャしない場合の関数ポインターへの変換演算子のみです。これらのいずれも、キャプチャされたエンティティの抽出には使用できません。

于 2013-04-02T11:10:19.180 に答える