2013-05-16 36 views
-1

所以我想在C++中創建一個簡單的小數據庫來獲得樂趣。我想用數組來完成它。但我不斷收到錯誤。我希望它在用戶輸入學生信息後遞增整數'i'。這樣就可以輸入無限的姓名年齡。我想最終將用戶輸入的名字存入記事本。我可以在int main()中做到這一點,但我試圖用頭文件進行試驗。我有很多數組的麻煩。在C++頭中數組的問題

下面是我在頭文件和CPP文件中使用的一段代碼。我嘗試在public中聲明int'i'並在public中聲明int'b',並將它們放入數組中,然後將私有對象指向CPP文件中的公共,但它不起作用。 如果你們可以幫助我,那將是非常感謝!順便說一句,我是新來的,請原諒我的無知。我不是否我正確使用了指針。

#include <string> 

class student3 
{ 
    protected: 
    int i; 
    std :: string *_studentFirstName[]; 
    std :: string *_studentLastName[]; 
    int *_studentAge[]; 
    double *_studentGPA[]; 

    public: 
     int b; 
     void setstudentFirstName(std :: string firstName[]); 
     void setstudentLastName(std :: string lastName[]); 
     void setstudentAge(int Age[]); 
     void setstudentGPA(double GPA[]); 
     std :: string getstudentFirstName(); 
     std :: string getstudentLastName(); 
     int getstudentAge(); 
     double getstudentGPA(); 
    } 

#include "student3.h" 

void student3 :: setstudentFirstName(std :: string firstName[b]) 
{ 
*_studentFirstName[i] = firstName[b]; 
} 
void student3 :: setstudentLastName(std :: string lastName[b]) 
{ 
*_studentLastName[i] = lastName[b]; 
} 
void student3 :: setstudentAge(int Age[b]) 
{ 
*_studentAge[i] = Age[b]; 
} 
void student3 :: setstudentGPA(double GPA[b]) 
{ 
*_studentGPA[i] = GPA[b]; 
} 
std :: string student3 :: getstudentFirstName() 
{ 
return *_studentFirstName[i]; 
} 
std :: string student3 :: getstudentLastName() 
{ 
return *_studentLastName[i]; 
} 
int student3 :: getstudentAge() 
{ 
return *_studentAge[i]; 
} 
double student3 :: getstudentGPA() 
{ 
return *_studentGPA[i]; 
} 
+0

首先,我不認爲你實際上意味着使用指針的空數組。要繼續,你應該使用['std :: vector'](http://en.cppreference.com/w/cpp/container/vector)。我認爲你需要閱讀更多關於數組和指針的知識,它們的相似之處是什麼以及它們的區別是什麼。 –

+0

如果你使用'C++',你應該真的使用'std :: vector' – lcs

+0

這是真的編譯嗎?你錯過了一個;在類聲明的最後,在#include「student3.h」行前 – Bathsheba

回答

2

讓您Student對象代表一個學生,然後用std::vector<Student>有他們的集合。

大大簡化例如: -

class Student 
{ 
public: 
    std :: string firstName; 
    std :: string lastName; 
    int age; 
    double gpa; 
} 

std::vector<Student> students; 

... 
Student temp; 
temp.firstName = "Arthur"; // or read from user, of course 
temp.lasttName = "Dent"; 
temp.age = 42; 

students.push_back(temp); // adds a *copy* of temp to the vector. 
+0

k所以我想我必須做更多的閱讀。因爲我不知道矢量是什麼。大聲笑 – Snewman8771

+0

@ Snewman8771 - 它只是一個可以動態增長的數組。擔心讓你的「學生」對象正確,然後收集它們就不是問題。在你理解媒介之前,你可能只有'學生學生[100];'來獲得其中的100個數組。沒有什麼不同,真的。 – Roddy

+0

用戶能夠輸入學生的姓名嗎?當然,我不認爲它是硬編碼 – Snewman8771