c++中使用成员函数的循环依赖



我意识到这个问题已经被问过很多次了,解决方案通常是向前声明。但是,如果我是正确的,当在该文件中使用成员函数时,不能使用前向声明。我有一个循环依赖,我不确定如何通过设计和每个依赖使用成员函数修复。下面是我的代码:

// GUI.h
#include "ElementButton.h"
class GUI
{
public:
    vector<ElementButton*> Buttons;
    void ParseElements(); // Uses ElementButton member functions
};

// Element.h
#include "GUI.h"
class Element
{
public:
    void ReplaceGUI(string GUITextFile); // Uses GUI member functions and destructors
    GUI* CurrentGUI;
};

// ElementButton.h
#include "Element.h"
class ElementButton : public Element
{
public:
    void OnButtonClicked(); // Uses inherited ReplaceGUI function
};

您不必为了返回指针而定义类。像这样再添加一个报头ForwardDeclarations.h:

class GUI;
class Element;
class ElementButton;

并包含在你所有的头文件中:

// GUI.h
#include "ForwardDeclarations.h"
class GUI
{
public:
    vector<ElementButton*> Buttons;
    void ParseElements(); // Uses ElementButton member functions
};

// Element.h
#include "ForwardDeclarations.h"
class Element
{
public:
    void ReplaceGUI(string GUITextFile); // Uses GUI member functions and destructors
    GUI* CurrentGUI;
};

// ElementButton.h
#include "ForwardDeclarations.h"
#include "Element.h"
class ElementButton : public Element
{
public:
    void OnButtonClicked(); // Uses inherited ReplaceGUI function
};

注意,ElementButton.h仍然需要包含Element.h,因为从类Element派生类ElementButton需要定义类。

相关内容

  • 没有找到相关文章

最新更新