3

編集:まあ、他の人の提案で、私は最小限の例を作成しました...そしてそれはうまくいったので、将来誰のためにもここで共有します. 作業コードは次のとおりです。

#include <iostream>
#include <functional>

using namespace std;

class myClass
{
    char* str;
public:
    myClass()
    {
        str = "";
    }

    void funcA()
    {
        funcB([](myClass* mc)
            {
                mc->str = "HelloWorld";
            }
        );
    }

    void funcB(std::function<void (myClass*)> otherFunc)
    {
        otherFunc(this);
    }     

    void printStr()
    {
        cout << str;
    }
};

int main()
{
    myClass mc;
    mc.funcA();
    mc.printStr();
    int done;
    cin >> done;
}

元のコードが機能しなかった理由は、funcB の宣言と実装を 2 つの部分 (.h と .cpp) に分割し、.h でこれを行ったためです。

void funcB(std::function<void (myClass*)> otherFunc = NULL)

私が知る限り、ここで NULL を渡すことは絶対にできません。これは私にとって厄介なことであり、うまくいけばバグです。しかし、それ以外は機能します。

4

1 に答える 1

4

パスはできませんが、パスNULLできますnullptr

于 2012-07-19T18:41:55.650 に答える