对象属性兄弟访问

时间:2017-08-26 23:45:42

标签: c++ c++11 visual-c++

我正在使用调试控制台制作游戏。它的结构如下:

class Game
{
    bool debugMode;
    // ...
    std::unique_ptr<Loop> loop;
    std::unique_ptr<Debugger> debugger;
    // ...
}

它在类函数中很有用:

void Game::init()
{
    // ...
    loop = std::make_unique<Loop>();

    if (debugMode)
    {
        debugger = std::make_unique<Debugger>();
        debugger->console->write(L"Game initialized."); // works great!
    }
}

但是如果我想在loop中向控制台写一些东西怎么办?

  • 我不想将debugger传递给loop
  • 我不想创作 debugger中的另一个loop

如何授予loop debugger {/ 1>}的访问权限?

1 个答案:

答案 0 :(得分:2)

根据Sam Varshavchik的建议使用shared_ptr

  

多个shared_ptr对象可能拥有相同的对象。 1

现在我开始工作,以防你感兴趣:

class Game
{
    bool debugMode;
    // ...
    std::unique_ptr<Loop> loop;
    std::shared_ptr<Debugger> debugger;
    // ...
}

init功能:

void Game::init()
{
    // ...

    if (debugMode)
    {
        debugger = std::make_unique<Debugger>();
        loop = std::make_unique<Loop>(debugger);
        debugger->console->write(L"Game initialized."); // works great!
    }
    else
    {
        loop = std::make_unique<Loop>();
    }
}

Loop构造函数:

Loop::Loop(std::shared_ptr<Debugger> debugger) : Loop()
{
    this->debugger = debugger;
}