C++中的回调函数
callback function in c++
代码描述了两个实现回调函数的class,回调函数必须是模板传入的class参数中的成员函数。
在代码下方,我附上了我收到的相关错误消息。
a.h
template <class CLASSNAME>
class a
{
public:
typedef void (CLASSNAME::*myFunction)();
a(CLASSNAME& myObject, myFunction callback) :
m_myObject(myObject)
{
m_myFuntion = callback;
}
void update()
{
(m_myObject).*(m_myFuntion);
}
myFunction m_myFuntion;
CLASSNAME& m_myObject;
};
dummy.h
#include <stdio.h>
class dummy
{
public:
dummy()
{
var = 14;
}
void func()
{
printf("func!!");
}
int var;
};
main.cpp
#include <cstdlib>
#include "a.h"
#include "dummy.h"
void main()
{
dummy dum;
a<dummy> avar(dum, &(dummy::func));
avar.update();
system("pause");
}
我正在尝试实现回调函数,但收到以下错误消息:
C2298 missing call to bound pointer to member function
问题是什么?
你有很多括号,只是没放在正确的位置。调用指向成员函数的指针的正确语法是:
void update()
{
(m_myObject.*m_myFuntion)();
}
您在错误的地方使用了括号:
这个:
a<dummy> avar(dum, &(dummy::func));
应该是这样的:
a<dummy> avar(dum, &dummy::func);
还有这个:
(m_myObject).*(m_myFuntion);
应该是:
(m_myObject.*m_myFuntion)();
代码描述了两个实现回调函数的class,回调函数必须是模板传入的class参数中的成员函数。 在代码下方,我附上了我收到的相关错误消息。
a.h
template <class CLASSNAME>
class a
{
public:
typedef void (CLASSNAME::*myFunction)();
a(CLASSNAME& myObject, myFunction callback) :
m_myObject(myObject)
{
m_myFuntion = callback;
}
void update()
{
(m_myObject).*(m_myFuntion);
}
myFunction m_myFuntion;
CLASSNAME& m_myObject;
};
dummy.h
#include <stdio.h>
class dummy
{
public:
dummy()
{
var = 14;
}
void func()
{
printf("func!!");
}
int var;
};
main.cpp
#include <cstdlib>
#include "a.h"
#include "dummy.h"
void main()
{
dummy dum;
a<dummy> avar(dum, &(dummy::func));
avar.update();
system("pause");
}
我正在尝试实现回调函数,但收到以下错误消息:
C2298 missing call to bound pointer to member function
问题是什么?
你有很多括号,只是没放在正确的位置。调用指向成员函数的指针的正确语法是:
void update()
{
(m_myObject.*m_myFuntion)();
}
您在错误的地方使用了括号:
这个:
a<dummy> avar(dum, &(dummy::func));
应该是这样的:
a<dummy> avar(dum, &dummy::func);
还有这个:
(m_myObject).*(m_myFuntion);
应该是:
(m_myObject.*m_myFuntion)();