如何通过将类的对象和成员函数传递给 c++ 中的另一个函数来调用类?

How do I call a class by passing it's object and member function to another function in c++?

本文关键字:函数 c++ 另一个 调用 对象 何通过 成员      更新时间:2023-10-16

如何在 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()
{
}

我写了一个完整的例子,可能会有所帮助

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;
}

如果你有一个独立的函数,你可以用另一个函数来调用它。
老实说,你的问题并不完全清楚。然而:

int F(int,int,int);
int g();
//main scope 
F(g(),a,b)