我創建了兩個類,Class和Students。在類的構造函數中,我需要動態地初始化指向Student對象的指針數組(pStudents)(我不能使用矢量),初始化爲null。當我使用函數addStudent將一個學生添加到類中時,我希望能夠搜索第一個空地址的指針數組,然後將該學生分配給該數組中的該點。如果學生已經在課堂上,我也希望能夠搜索該課程,看看這個學生是否已經在那裏。向數組添加指針時出現分段錯誤
當我嘗試編譯程序時,出現分段錯誤。我知道它與我在創建pStudents數組時使用堆內存的方式有關,但我不確定如何解決此問題。
下面是我已經宣佈在類的頭文件的數組:
Student **ptrStudents;
這是Class對象的構造函數。現在,我使用數組的任意大小40。
Class::Class()
{
Student **ptrStudents = new Student*[40];
}
這裏是函數addStudents,它將一個指向學生對象的指針作爲它的參數。請注意,字符串名稱是所有學生的數據字段。
Class::addStudents(Student *student)
{
string name = student -> getName();
string nameTemp;
for (int i = 0; i < 40; i++)
{
if (ptrStudents[i] != 0)
{
nameTemp = ptrStudents[i] -> getName();
if (name == nameTemp)
{
cout << "This student is already in the class." << endl;
return;
}
}
else if (ptrStudents[i] == 0)
{
ptrStudents[i] = student;
return;
}
這裏是我的工作主要功能:
int main()
{
Class Economics;
Student student1("Hannah");
Economics.addStudent(&student1);
return 0;
}
什麼是'ptrFlights [I]'? – YankeeWhiskey 2013-04-06 18:46:33
當你編譯或者運行時,你會遇到段錯誤嗎?你的意思是編譯時出錯了嗎? – 2013-04-06 18:48:10
對不起,修正了我的錯字給ptrStudents。我應該更清楚,這是我運行程序的時候。它會編譯但不能正確運行(我正在運行的編輯器將兩個步驟結合在一起)。 – 2013-04-06 18:51:34