2010-10-05 86 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