【发布时间】:2015-05-12 04:12:01
【问题描述】:
我正在编写一个 3d 资产导入库。 (它使用Assimp,顺便说一句)。有一个包含网格的节点的大场景,每个网格都包含一个材质。所以我创建了下一个类:场景、网格、材质。
只有 Scene 类应该被编码器实例化和使用,因此最合理的做法 (imo) 是将 Mesh 声明为 Scene 内部的私有(并且 Material 也声明为 Mesh 内部的私有)。
这应该没问题,因为只有 Scene 使用并且应该使用 Mesh,但唯一的问题是它看起来很糟糕而且我不方便以这种方式编码。 (嵌套在类中的函数嵌套在类中等......)
我的问题是是否有其他编码方法可以实现我的目标。
【问题讨论】:
-
我一般不是
friends 的粉丝,但您可以将Mesh构造函数设为私有并将Scene设为friend,以便允许实例化Mesh。 -
如果只能实例化
Scene,您如何建议创建Mesh以添加到Scene,或创建Material以添加到Mesh,而不实例化Mesh或Material或两者兼而有之?Scene拥有一些类似容器的方法可能会更好,并允许Mesh和Material根据需要被实例化并酌情添加到Scene... -
@twalberg 场景得到了一个导入文件。它的职责是将所有 3d 内容放入内存中,并使用 Mesh 和 Material 来做到这一点。用户不应该关心网格和材质。
标签: c++