对象属性同级访问
Object property sibling access
我正在制作一个带有调试控制台的游戏。它的结构如下:
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
. - 我不想创建
loop
的另一个debugger
.
如何授予loop
访问debugger
的权限?
按照 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;
}
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 使用内存地址访问结构的属性值
- 使用 CTRP 时,是否访问访问父构造函数 UB 中的子属性?
- 如何从传递到对象的对象内部访问对象的类属性?
- 如何使用 pybind 访问结构的属性?
- OpenCV Tracker 属性访问在 ARM 上因 SEGFAULT 而失败,但在 X86_64 中工作
- 如何使用指针从另一个类访问属性
- 让 Redhawk 组件访问另一个组件的属性
- 父级的子属性 - 访问权限
- 访问除main.cpp之外的.cpp文件中的QMLEngine/rootObject属性
- Nan::ObjectWrap to Napi::Object Wrap 无法访问 JavaScript 中的属性
- 对象属性同级访问
- 访问属性或使用 getter 方法
- 具有可移动节点、可访问属性和可靠ID的C++图
- 单声道嵌入:如何在 C/C++ 中访问属性的类型
- 访问属性树中的多值键
- 何时使用 " . " 或 " -> " 运算符访问属性或成员函数?
- Qt c++访问属性
- 如何从实体组件系统的子类中访问属性
- 无法访问属性 c++