使用带传递函数的对象C++
我试图用另一个对象构建一个对象并传递函数 对不起,描述不清楚 问题是,如果TESTobj是其他对象,我构建了新的objectGradebook并使用TESTobj传递函数,没有对象传递函数没有问题,但在对象中会出错使用带传递函数的对象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::*)()’
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();
}
你到底有什么问题?