2012-12-23 124 views
0

我有一个名为RenderObject的类,它包含3个变量:一个位置,一个保存指向数组长度的int和一个指向“Faces”数组的指针如何在派生构造函数中生成参数时将其传递给默认构造函数?

Face只是一个持有它的类类型(四边形或三角形),其颜色以及指向顶点数组的指针(存储为Vector3f)。

我的RenderObject类有一个构造函数,它需要一个位置,一个面数组和一个int数组,它是数组中的面数。

我也有叫魔方类,它是从渲染对象(所以我可以很容易地生成宽度,高度和深度尺寸的立方体。

的问题是派生,魔方的构造函数只需要位置和尺寸,因此,当涉及到调用默认的构造函数:

Cube::Cube(sf::Vector3f *positionVector, float width, float height, float depth) : RenderObject(positionVector, /*can't supply this*/, 6) { 

因为立方类运行GenerateFaces(我无法通过面孔的阵列),根据尺寸自动创建面

所以我的追求离子是,我如何将生成的面传递给RenderObject的构造函数?还是有更好的方法来做到这一点?

回答

2

有几种方法可以解决这个问题。一些最常见的方法是创建面阵列protected,以便它可以被子类访问,在基类中创建一个受保护的函数SetFaces以设置该数组,或者在基类中创建一个方法访问私有变量。

哦,最后一点:不要使用原始数组/指针,而应使用std::vector

1

使方法GenerateFaces成为静态方法。然后你可以在base-constructor调用中调用它。

我在这里假设GenerateFaces方法可以使用多维数据集构造函数中的参数进行工作。您将不得不将这些参数添加到GenerateFaces方法中。

编辑:刚才看到了C++标签,而我想到了C#。应该仍然适用。

相关问题