Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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++_Object - Fatal编程技术网

使用带传递函数的对象C++

使用带传递函数的对象C++,c++,object,C++,Object,我试图用另一个对象构建一个对象并传递函数 对不起,描述不清楚 问题是,如果TESTobj是其他对象,我构建了新的objectGradebook并使用TESTobj传递函数,没有对象传递函数没有问题,但在对象中会出错 error: no matching function for call to ‘TESTobj::SET(void (GradeBook::*)())’ no known conversion for argument 1 from ‘void (GradeBook::*)()’

我试图用另一个对象构建一个对象并传递函数

对不起,描述不清楚 问题是,如果TESTobj是其他对象,我构建了新的objectGradebook并使用TESTobj传递函数,没有对象传递函数没有问题,但在对象中会出错

error: no matching function for call to ‘TESTobj::SET(void (GradeBook::*)())’

no known conversion for argument 1 from ‘void (GradeBook::*)()’ to ‘void (*)()’
下面是一个例子:

void TESTobj::SET(void (*nu)())
{//point the function
    this->nu=nu;
}

void TESTobj::Test()
{//implement the function
    (*nu)();
}

void GradeBook::Grade()
    {//the function I build
        cout << "HELLO" <<endl;
    }
void GradeBook::Set()
    {
        OBJ.SET(&GradeBook::Grade);//GotProblemHere
        OBJ.Test();
    }
Grade是一个非静态成员函数,它需要在Grade Book的实例上操作。不能将其传递给需要普通函数指针的函数

您可以将TESTobj::SET更改为接受std::function对象,然后将成员函数包装在lambda中:

void TESTobj::SET(std::function<void()> nu)

void GradeBook::Set()
{
    OBJ.SET([this](){Grade();});
    OBJ.Test();
}

你到底有什么问题?