2017-06-03 380 views
-2

我是新來的C++和編程的整體,我正在做一個賦值,我創建了一個類Person,它包含forname,surname和age的變量。這工作沒有問題,但我的問題出現時,我將類向量傳遞給我的線性搜索功能,我得到的錯誤「.end必須有類/結構/聯合」。我不知道爲什麼,在Google搜索了大約一個小時後,我決定改爲詢問。.length的左邊必須有class/struct/nnion

int linsok(Person p[], int n, int a) 
{ 
    cout << "Please enter the age of the person you want to find: "; 
    cin >> a; 

    for (n = 0; n < p->Person::Person.end(); n++) 
    { 
    if (a = p->Person::Person.setAge) 
    { 
     cout << "The person you are looking for has the position " << n 
     << " in the list." << endl; 
    } 
    else 
     return -1; 

    }} 

爲了澄清,我的任務是創建一個通過矢量搜索線性搜索,找到一個符合搜索條件的人的年齡:一,並返回-1,如果沒有人與年齡找到。

+1

錯誤消息是因爲Person :: Person不是結構類型實例的名稱。你的代碼中還有其他一些問題,你沒有問過。在某種程度上,顯而易見,你依靠猜測,而不是對C++的任何理解。特別是'Person p []'不是在C++中傳遞向量的方法。在嘗試編寫代碼之前,嘗試在課堂上聆聽並閱讀任何筆記或參考資料。 – Peter

回答

0

請注意,p不是std::vector,它只是一個普通的舊數組。所述n參數應該表示它的大小,所以:

for (int i = 0; i < n; ++i) { 
    // Code... 
0

Person p[]是一個數組。與std::vector<Person>不同,它不提供通過屬性確定其長度的方法。這就是爲什麼n傳遞給你的函數,可能是爲了指定數組中元素的數量。循環應該是這樣的:

for (int i = 0; i < n ; i++) 

你指人的年齡如下:

p[i].age // or getAge(), I don't see you Person's class 

注:範圍分辨率::語法是較爲先進的。需要指定要調用哪個函數或在特定名稱空間內使用哪種類型。大多數情況下,您現在可以忽略它。

相關問題