我已经创建了一个类,说我将其命名为MyClass
,以及一个从其继承的类,例如MyClassDaughter
,然后尝试了以下操作:
MyClassDaughter *MyClassDaughterPointer;
vector <MyClass*> MyClassVector;
MyClassVector.push_back(MyClassDaughterPointer);
MyClassVector[0]->SetSomethingInMyClassDaughter;
当我尝试运行可执行文件时,它显示“ Segmentation Violation”。
(我认为必须说我的代码中包含一些Root东西……这可能是问题吗?无论如何,我知道,通常,分段违规错误是由于尝试访问我们没有访问权限的内存而引起的,但我认为我确实有权访问此内存。我错了吗?)
最佳答案
您没有初始化MyClassDaughterPointer,因此将一些随机(野生)指针推到向量上。
您需要创建MyClassDaughterPointer的新实例。假设您有一个默认的构造函数,它将如下所示:
MyClassDaughter *MyClassDaughterPointer = new MyClassDaughterPointer();