我正在用OpenGL编写程序。有一个Gfx
类,它包含一个OpenGL上下文并包装OpenGL库。
还有一个Texture
类,用于包装OpenGL纹理名称(包括生成和删除)。 Texture
类自然对Gfx
类具有隐式依赖性。但是我想要RAII,没有指针,因此认为Texture
类必须是可公开访问的。
在构造的Gfx
实例上表达依赖性的最干净的方法是什么?
最佳答案
假设纹理在没有上下文的情况下就不存在,那么在这种情况下,似乎构造函数参数是正确的,可能是std::shared_ptr<Gfx>
(希望从无指针策略中删除该参数-我认为它是C++构造)。只要没有设置至少一个纹理,Gfx就会持续存在。