c++ - 两个类 (A,B) - B 有一个指向类 A 非静态方法的指针

标签 c++ pointers

我有两个类(class),他们对自己一无所知,类(class) A,类(class) B。

A 类称为 ENGINE, B类称为GUI。

我希望 GUI 类有一个指向 ENGINE 类中的函数的指针,这样当 GUIControl 上发生事件时,它会调用带有两个参数 (int,int) 的 ENGINE 成员函数。

这是我想要的方式:

class CGUIManager
{
public:
    void SetControlCallback(void(*pFunctionPointer)(int,int) );

private:
    void (*m_pControlCallbackFunction)(int,int) ;
};
void CGUIManager::SetControlCallback(void(*pFunctionPointer)(int,int) )
{
    if(pFunctionPointer)
        m_pControlCallbackFunction = pFunctionPointer;
}

class CEngine
{
private:        
    void GUIControlsCallback(int iControlID, int iControlMessage);
    CGUIManager *pGUI;
};

现在在初始化 ENGINE 时,我想调用:

//Set Controls Callback to CEngine Method 
pGUI->SetControlsCallback( GUIControlsCallback );

要在 CGUIManager 类中注册一个回调,它指向 CEngine 类中的一个方法。

我该怎么做?

提前致谢。

最佳答案

如果你希望它是 oo 而不是函数指针(必须指向静态成员 btw),我建议使用接口(interface)(或类似的东西)

class IGuiCallback
{
public:
    virtual void  GUIControlsCallback(int iControlID, int iControlMessage)=0;
};

class CGUIManager
{
public:
    void SetControlCallback(IGuiCallback*);

private:
    IGuiCallback* m_pCallback;
};

class CEngine:public IGuiCallback
{
public:
    void GUIControlsCallback(int iControlID, int iControlMessage);

private:
    CGUIManager *pGUI;
};

然后在引擎中:

pGUI->SetCallback(this);

我的代码中可能有一些语法错误,但你应该明白了

关于c++ - 两个类 (A,B) - B 有一个指向类 A 非静态方法的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226166/

相关文章:

c++ - 我如何扩展像 Armadillo 这样的库中的类?

C++:虚方法

c++ - 我们可以从设备句柄中获取设备对象的详细信息/名称吗

java - JNA、映射和指针引用

c - 链表行为 - 帮助我理解

c - 如何在 C 中将 struct 作为参数传递并对其进行 memcpy ?

objective-c - Objective C 中的 C 指针的内存管理如何工作

c++ - 使用 C++ MFC,获取添加到浏览器(Chrome、IE 或 Firefox)的扩展列表

c++ - 在 C++ 中初始化指针

c++ - 局部变量作为函数调用的参数