C++ C-cast中的指针和继承问题?

C++ C-cast中的指针和继承问题?,c++,inheritance,casting,C++,Inheritance,Casting,我正在从事一个opengl项目,我的一些类遇到了问题: 主要有三类: 初始化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函数中。我不明

我正在从事一个opengl项目,我的一些类遇到了问题:

主要有三类:





初始化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_元素和_元素都是指针。我认为这是演员阵容的问题,但我不知道如何解决。我尝试了动态投射:错误仍然存在

谢谢你的帮助


Kamouth

对象**p\u元素=元素
p_元素
设置为未初始化的内存。所以
p_元素-元素=nb_元素
p_元素++
*p_元素=_元素调用未定义的行为。我不建议您初始化内存,只建议您使用
std::vector
和智能指针


双指针表示你来自C背景,但是如果你想做C++开发,你必须学习C++习语。在C++中不要坚持写C代码。< /P>为什么这被标记为C?C和C++是两种完全不同的语言,你是否为<代码>元素< <代码> > RICHARJ.R.Ssiii分配了内存。我假定C指的是您可以在

add\u object
中看到的代码(通常是
nb\u元素
)。这不是典型的C代码。事实上,你可以看到一个类关键字并不意味着它的'C++'的meNo我没有。。。我很可耻。。非常感谢。您好,我使用了双指针,因为我使用的是需要通过指针调用的虚拟函数(对吗?)。如果构造函数中已分配
元素,则肯定不会。这是一个off-by-one错误,因为循环完成后,
p\u元素
将指向
elements
数组的末尾,假设
nb\u元素
设置正确。实际上,考虑到末尾的
nb\u元素
,这更像是一个“您没有分配足够的内存”错误。不过,要回显@LuchianGrigorie,请尝试改用
std::vector
。@Kamouth否。您也可以通过智能指针和引用调用虚拟函数。@Luchian Grigore,好的,但我不能使用std::vector,对吗?我不知道什么是智能指针。
class object{
public:
    object();
    [...]
};
class point : public object{
point();
point(double _x, double _y, double _z,double _r);
[...]
}
void GLWidget::initializeGL(){

   [OpenGL initialization]

   _scene=new scene;
   point* s1=new point(0.0,0.0,3.0,1.0);
   _scene->add_object(s1);

}