gpt4 book ai didi

c++ - C++中的回调函数

转载 作者:太空狗 更新时间:2023-10-29 23:50:10 28 4
gpt4 key购买 nike

代码描述了两个实现回调函数的类,回调函数必须是传入模板的类参数中的成员函数。在代码下方,我附上了我收到的相关错误消息。

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

关于c++ - C++中的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33379060/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com