Kai*_*aan 6 c++ pointers smart-pointers
我发现自己在游戏中的几个地方想要在我的设计中使用指针指针.例如,我有一个类OpenGLRenderer,它根据vertex/indice/texcoord数据,给定材料道具的材料等创建网格,然后是一个ResourceManifest从文件缓存网格/材料的类,并在加载其中一个资源时创建它的一个实例.OpenGLRenderer.所以那里有一个耦合.
我通常喜欢在编码时使用RAII设计,这会诱使我遵循以下关系:
ResourceManifest(OpenGLRenderer** renderer);
Run Code Online (Sandbox Code Playgroud)
因为当OpenGL上下文被拆除并且所有OpenGL状态特定的东西需要重新初始化时,例如重新创建窗口时,我只是重新创建OpenGLRenderer并让构造函数/析构函数完成所有工作并ResourceManifest使用它永远不会是更明智的.
我想知道的是,如果这足以证明使用普通的旧指针指针,是否还有更现代的工具或技术?我一直在寻找各种smart_ptrs,但他们并没有处理手头的问题,因为我想重新创建托管对象而不会传递新的smart_ptrs.
正如其他人已经说过的,您可以引用智能指针。
但是,如果您还想提供智能指针之外的功能,您可以将代码放入迭代器中,特别是在底层数据结构不是同质的情况下。同样,这取决于如何使用指针到指针。然后,无论您最终使用什么接口,其本身都可以包装在智能指针中。