我正在使用调试控制台制作游戏。它的结构如下:
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>}的访问权限?
答案 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;
}