私はopenglプロジェクトに取り組んでおり、いくつかのクラスで問題が発生しました:
3 つの主要なクラスがあります。
class scene{
public:
scene();
object** elements;
unsigned int nb_elements;
void add_object(object* _element){
objet** p_elements=elements;
while(p_elements-elements!=nb_elements)
p_elements++;
*p_elements=_element; //here is the bug
nb_elements++;
}
}
[...]
};
class object{
public:
object();
[...]
};
class point : public object{
point();
point(double _x, double _y, double _z,double _r);
[...]
}
Opengl を初期化した後、同じ関数でシーンを初期化します。
void GLWidget::initializeGL(){
[OpenGL initialization]
_scene=new scene;
point* s1=new point(0.0,0.0,3.0,1.0);
_scene->add_object(s1);
}
バグは Scene::add_object 関数にあります。*p_elements と _element はどちらもポインターであるため、なぜ機能しないのかわかりません。キャストの問題だと思いますが、修正方法がわかりません。動的キャストを試しましたが、バグは残っています。
ご協力ありがとうございました、
カマス