Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过传递类来调用它';在c++;? 如何通过将对象和成员函数传递给C++中的另一个函数来执行成员函数。我知道我的问题的答案就在那里;但是,我不知道这叫什么。到目前为止,我创建了两个文件,exeFunc.h和exeFunc.cpp。其代码包括:_C++_Object_Execute_Member - Fatal编程技术网

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

如何通过传递类来调用它';在c++;? 如何通过将对象和成员函数传递给C++中的另一个函数来执行成员函数。我知道我的问题的答案就在那里;但是,我不知道这叫什么。到目前为止,我创建了两个文件,exeFunc.h和exeFunc.cpp。其代码包括:,c++,object,execute,member,C++,Object,Execute,Member,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 &am

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.h
exeFunc库的头文件。
*/
#ifndef EXEFUNC_H
#定义EXEFUNC_H
#包括“mbed.h”
#包括“msExtensions.h”
#包括“cfExtensions.h”
#包括
类exeFunc
{
公众:
exeFunc(msExtensions&msExt、cfExtensions&cfExt);
私人:
void _splitFuncFromCmd();
void _attachCallback();
msExtensions和msExt;
cfExtensions和\u cfExt;
//函数指针;
};
#恩迪夫
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()
{

}
/*
文件:exeFunc.cpp
执行其他传感器库/类中的函数
建造师
*/
#包括“mbed.h”
#包括“ConfigFile.h”
#包括“msExtensions.h”
#包括“cfExtensions.h”
#包括“exeFunc.h”
#包括
#包括
使用名称空间std;
exeFunc::exeFunc(msExtensions&msExt,cfExtensions&cfExt):\u msExt(msExt),\u cfExt(cfExt)
{
//_cfExt.checkConfigForFirstStart();
//_p、 附加(&_cfExt,&cfExtensions::checkConfigForFirstStart);
//_p、 call();
}
void exeFunc::_splitfuncfromfromcmd()
{
}
void exeFunc::_attachCallback()
{
}

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

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

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

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

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

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

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

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


这就是您要寻找的:是要传递对象,还是传递指向成员函数的函数指针?@SingerOfTheFall到目前为止,我通过引用传递了所有对象,但我从未创建指向成员函数的函数指针。基本上,我试图通过传递对象和成员函数来一举两得,这样我就可以以一种通用的方式执行函数了。@SingerOfTheFall是的,我可以这样做。有没有一种方法可以通过将对象和方法传递给另一个函数来动态地实现这一点?@jogojapan这就是我所寻找的;然而,模板和类方法中的所有其他参数使我的理解变得模糊不清。这就是您要寻找的:是传递对象,还是传递指向成员函数的函数指针?@SingerOfTheFall到目前为止,我通过引用传递了我的所有对象,但我从未创建过指向成员函数的函数指针。基本上,我试图通过传递对象和成员函数来一举两得,这样我就可以以一种通用的方式执行函数了。@SingerOfTheFall是的,我可以这样做。有没有一种方法可以通过将对象和方法传递给另一个函数来动态地实现这一点?@jogojapan这就是我所寻找的;然而,模板和类方法中的所有其他参数使我的理解变得模糊。我可以解释我试图做的事情的最好方法是,通过传递对象和方法来创建一个基本的泛型函数指针,以常规方式执行该函数。您应该定义一个指向函数的指针。动态是什么意思?动态是指将指针传递到另一个函数以执行成员的函数。”“动态”可能是一个错误的词。我可以解释我试图做的事情的最好方法是,通过传递对象和方法来创建一个基本的通用函数指针,以常规方式执行该函数。您应该定义一个指向函数的指针。动态是什么意思?动态是指将指针传递到另一个函数以执行成员的函数。”“dynamicy”可能是一个错误的词。请注意这一行:int r=(obj->*mfp)(5);//30引用的对象_cfExt和_msExt有我希望在请求时执行的方法。注意这行:int r=(obj->*mfp)(5);//30引用的对象_cfExt和_msExt具有我希望根据请求执行的方法。