0

如何通过将对象和成员函数传递给 C++ 中的另一个函数来执行成员函数。我确实明白我的问题的答案就在那里;但是,我不知道这叫什么。到目前为止,我创建了 2 个文件,exeFunc.h 和 exeFunc.cpp。他们的代码包括:

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 回答
1

你用另一个函数调用它。如果你有一个独立的函数。
老实说,您的问题并不完全清楚。但是:

int F(int,int,int);
int g();
//main scope 
F(g(),a,b)
于 2012-11-28T05:53:31.870 回答