0

オブジェクトとメンバーの関数を c++ の別の関数に渡して、メンバーの関数を実行するにはどうすればよいですか。私の質問に対する答えがそこにあることは理解しています。しかし、これが何と呼ばれているかはわかりません。これまでに、exeFunc.h と exeFunc.cpp の 2 つのファイルを作成しました。彼らのコードは次のもので構成されています。

exeFunc.h

/*
File: exeFunc.h

Header file for exeFunc Library.
*/

#ifndef EXEFUNC_H
#define EXEFUNC_H

#include "mbed.h"
#include "msExtensions.h"
#include "cfExtensions.h"

#include <map>

class exeFunc
{

public:
    exeFunc(msExtensions &msExt, cfExtensions &cfExt);

private:

    void _splitFuncFromCmd();
    void _attachCallback();

    msExtensions &_msExt;
    cfExtensions &_cfExt;

    //FunctionPointer _p;
};

#endif

exeFunc.cpp

/*
File: exeFunc.cpp

Execute functions in other Sensor libraries/classes

Constructor
*/

#include "mbed.h"
#include "ConfigFile.h"
#include "msExtensions.h"
#include "cfExtensions.h"
#include "exeFunc.h"

#include <map>
#include <string>

using namespace std;

exeFunc::exeFunc(msExtensions &msExt, cfExtensions &cfExt) : _msExt(msExt), _cfExt(cfExt)
{
    //_cfExt.checkConfigForFirstStart();
    //_p.attach(&_cfExt, &cfExtensions::checkConfigForFirstStart);

    //_p.call();

}

void exeFunc::_splitFuncFromCmd()
{

}

void exeFunc::_attachCallback()
{

}
4

2 に答える 2

2

私は完成した例を書きました、助けになるかもしれません

class MyClass
{
public:
    MyClass(int b)
        :_b(b)
    {
    }

    int Foo(int a)
    {
        return a * _b;
    }
    int _b;
};

typedef int (MyClass::*MFP)(int);

int get_result(MyClass* obj, MFP mfp)
{
    int r = (obj->*mfp)(5); // 30
    return r;
}

int _tmain(int argc, _TCHAR* argv[])
{
    MFP mfp = &MyClass::Foo;

    MyClass m(6);
    get_result(&m, mfp);


    return 0;
}
于 2012-11-28T05:57:12.277 に答える