我有一个名为RenderObject的类,它包含3个变量:一个位置,一个包含指向数组长度的int,以及一个指向“Faces”数组的指针
Face只是一个类,它包含它的类型(四边形或三角形),它的颜色,以及一个指向顶点数组的指针(存储为Vector3f)。
我的RenderObject类有一个构造函数,它需要一个位置,一个面数组,以及int,它是数组中面的数量。
我还有一个名为Cube的类,它来自RenderObject(因此我可以轻松生成宽度,高度和深度尺寸的立方体。
问题是,Cube的构造函数只需要位置和维度,因此在调用默认构造函数时:
Cube::Cube( sf::Vector3f *positionVector, float width, float height, float depth ) : RenderObject( positionVector, /*can't supply this*/, 6 ) {
我无法传递面数组,因为Cube类运行GenerateFaces();根据尺寸自动创建面。
所以我的问题是,如何将生成的面传递给RenderObject的构造函数?或者有更好的方法吗?
答案 0 :(得分:2)
有几种方法可以解决这个问题。一些最常见的是要么创建面数组protected
,以便子类可以访问它,在基类中创建受保护的函数SetFaces
来设置数组,或者使{ {1}}基类中可以访问私有变量的方法。
哦,最后一个提示:不要使用原始数组/指针,而是使用std::vector
。
答案 1 :(得分:1)
使方法GenerateFaces成为静态方法。然后,您可以在base-constructor调用中调用它。
我在这里假设GenerateFaces方法可以使用Cube构造函数中的参数来完成它。您必须将这些作为参数添加到GenerateFaces方法。
编辑:我在考虑C#时只看到了C ++标签。应该仍然适用。