gpt4 book ai didi

c++ - 在派生构造函数中生成参数时,如何将参数传递给默认构造函数?

转载 作者:行者123 更新时间:2023-11-28 00:51:14 25 4
gpt4 key购买 nike

我有一个名为 RenderObject 的类,它包含 3 个变量:一个位置,一个包含指向数组长度的 int,以及指向“Faces”数组的指针

Face 只是一个包含其类型(四边形或三角形)、颜色和指向顶点数组(存储为 Vector3f)的指针的类。

我的 RenderObject 类有一个构造函数,它需要一个位置、一个面数组和一个表示数组中面数的整数。

我还有一个名为 Cube 的类,它派生自 RenderObject(因此我可以轻松生成宽度、高度和深度尺寸的立方体。

问题是,Cube的构造函数只需要位置和尺寸,所以在调用默认构造函数时:

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

我无法传递面数组,因为 Cube 类运行 GenerateFaces();根据尺寸自动创建面。

所以我的问题是,如何将生成的人脸传递给 RenderObject 的构造函数?或者有更好的方法吗?

最佳答案

有几种方法可以解决这个问题。一些最常见的方法是使面数组 protected 以便子类可以访问它,在基类中创建一个 protected 函数 SetFaces 来设置数组,或者使 GenerateFaces 成为基类中可以访问私有(private)变量的方法。

还有最后一个提示:不要使用原始数组/指针,使用 std::vector相反。

关于c++ - 在派生构造函数中生成参数时,如何将参数传递给默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14009290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com