2010-10-05 105 views
-1
class Catalog 
{ 
    // string StationTitle; 
    string StationLocation; 

public: 
    string StationTitle; 
    Catalog() 
    { 
    StationTitle = "";  
    StationLocation = ""; 
    } 

    Catalog(string Title, string Location) 
    { 
    StationTitle = Title; 
    StationLocation = Location 
    } 

    void SetTitle(string Title) { StationTitle = Title; } 
    void SetLocation(string Location) { StationLocation = Location; } 

    string GetTitle() { return StationTitle; } 
    string GetLocation() { return StationLocation; } 
}; 

class StationList 
{ 
    vector<Catalog> List; //create the vector 
    vector<Catalog>::iterator Transit; 

public: 
    void Fill(); 
    void Remove(); 
    void Show(); 
}; 

void StationList::Remove() 
{ 
    string ToDelete; 

    cout << "Enter title to delete: " << endl; 
    cin >> ToDelete; 

    for(Transit = List.begin() ; Transit !=List.end() ; Transit++) 
    { 
    if(Transit->StationTitle() == ToDelete) 
    { 
     List.erase(Transit); //line 145 
     return; 
    } 
    } 
} 

我希望用戶輸入StationTitle並讓程序找到標題並將其刪除(如果找到)。這是我迄今爲止所提出的。
它給了我一個編譯錯誤:chief.cpp:145:錯誤:不匹配呼叫'(std :: string)()'查找和刪除矢量中的值

+1

您可以添加聲明交通? – JoshD 2010-10-05 01:23:10

+0

這是最好的使用擦除刪除成語這種事情。這可以將您的八行縮減爲一行,並且更容易掃描代碼並找出它的功能。 – 2010-10-05 01:24:43

+0

@詹姆斯麥克奈利斯:我可能會誤解你,但是因爲匹配只是元素的一部分,所以如果不重載平等或提供不同的比較函數,remove函數將不起作用。當然,這是一個吸引人的選擇。 – JoshD 2010-10-05 01:28:25

回答

0

你的錯誤是在這裏:

if(Transit->StationTitle() == ToDelete) 

更改該行這樣的:

if(Transit->StationTitle == ToDelete) 

OR

if(Transit->GetTitle() == ToDelete) 
+0

編譯時,我做了調整,但函數不會刪除它應該的值。這兩個建議都沒有奏效。 – chief 2010-10-05 02:01:29

+0

這可能是因爲輸入的名稱與標題不匹配。嘗試添加一些輸出或通過調試器來查看原因。 – JoshD 2010-10-05 02:05:16

+0

你是對的。但是,如果標題有一個似乎會導致問題的空間。我無法刪除包含空格的任何標題。 – chief 2010-10-05 02:18:50

0

看起來StationTitle是Transit中類的一個屬性,不是功能。不能確定沒有更多的代碼。

+0

如果是這樣的話,錯誤將在第143行。當然,也許它是......這使得錯誤更有意義:) – JoshD 2010-10-05 01:29:36

+0

那麼...有一個很好的機會會抱怨143行,但不要打折的可能性。用一粒鹽來取行數 - 編譯器往往是錯誤的。甚至沒有看到關於矢量內容的聲明,幾乎不可能說。 – riwalk 2010-10-05 01:31:46

+0

C++沒有屬性。因此,我在這裏稍微困惑...... – 2010-10-05 02:00:20