我有一個動態數組成員的類(我在pastebin中發佈了我的代碼)我不知道我的兩個類是否正確以及它們是否有任何問題?另外我需要寫(41行)的功能,設置類Student
到StudentsDynamicArray
?C++類中的動態數組
這裏是我的數組類
class StudentsDynamicArray{
private:
Student *Stud;// students dynamic array
int n; // current size of array
int nmax; // max size of array
public:
StudentsDynamicArray():n(0), Stud(NULL), nmax(0){}
StudentsDynamicArray(int n):
n(n){}
~StudentsDynamicArray(); // destructor
void SetStud(Student S){Stud[n++] = S;} // I get error when I try to set String or Int. //How I need to change this?
Student GetStud(int i){return Stud[i];}
void IncreaseSize(int ns);
};
//Function which change size of array
void Student::ChangeSize(int kiek){
if(kiek > nmax){
int *SNEW = new int[kiek];
for(int i=0; i<n; i++)
SNEW[i] = mark[i];
delete [] mark;
mark = SNEW;
nmax = kiek;
}
else if(kiek < nmax){
int *SNEW = new int[kiek];
for(int i=0; i<n; i++)
SNEW[i] = mark[i];
delete [] mark;
mark = SNEW;
n = nmax = kiek;
}
}
marcin_j感謝您的快速回復!正如你在我的代碼中看到的,我寫了析構函數。但我如何需要複製構造函數?我不明白。什麼是賦值運算符?我以前從未使用過這個東西。 – David
您正在代碼中複製Student,例如'Stud [n ++] = S',這使用operator =(查看我的答案中的鏈接),使這樣的副本正確您需要實現operator =來分配新的動態數組。 C++中的對象是按值複製的,而不是像C#或Java中那樣引用。 – marcinj
謝謝我在帖子中做了一些修改。 (也在pastebin中)。 – David