简化将成员传递给包含类的方法(在C ++中)

时间:2016-04-06 01:47:00

标签: c++ oop inheritance

我环顾四周但找不到我要找的东西(不确定要使用哪些关键字)。我自己正在做一个C ++项目。该项目包含window个,pagefield个。 window可以包含一个或多个pagepage可以包含一个或多个fieldwindowpagefield之间共享的内容是InputManager,它们负责用户的所有IO。 InputManager可以作用于窗口,页面和字段(例如,某些输入直接作用于page,而某些输入作用于field)。此外,field可以生成status条消息,以便在包含window的位置显示。

现在我有以下结构,但它似乎不是最佳的。有很多指针传递下来,我想知道是否有更好的方法。

class InputManager
{
    //do stuff to return input
}

class StatusManager
{
    //do stuff to display statuses
}

class Field
{
    friend class Page;
protected:
    InputManager *input_manager;
    StatusManager *status_manager;

    /*
    other methods that do stuff that 
    may recieve from input_manager and 
    send statuses through the status_manager
    */
}

class Page
{
    friend class Window;
protected:
    vector<Field* > fields;
    InputManager *input_manager;
    StatusManager *status_manager;
public:
    AddField(Field *field)
    {
        field->input_manager = this->input_manager;
        field->status_manager = this->status_manager;
    }
}

class Window
{
protected:
    vector<Page *> pages;
    InputManager *input_manager;
    StatusManager *status_manager;
public:
    Window()
    {
        input_manager = new InputManager();
        status_manager = new StatusManager();
    }

    AddPage(Page *page)
    {
        page->input_manager = this->input_manager;
        page->status_manager = this->status_manager;
    }
}

如果我想了解有关这些类型问题的更多信息,我应该考虑哪些关键字或字段?

0 个答案:

没有答案