我正在使用调试控制台制作游戏。它的结构如下:
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
访问权限?
最佳答案
使用 shared_ptr
正如 Sam Varshavchik 所建议的那样。
Several shared_ptr objects may own the same object.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;
}
关于c++ - 对象属性兄弟访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45900581/