2017-03-02 98 views
-4

所以我开始学习载体,我想从一个结构向量擦除元素,我有这样的结构:擦除元素

typedef struct Carro{ 
    int id, cc, cv; 
    char marca[50], modelo[50]; 
}car; 

typedef struct Condutor{ 
    vector<car> cars; 
    int id; 
    int totalC=0; 
    char nome[50]; 
}driver; 

,这删除:

for(int i=0; i< (*ptr).size(); i++){ 
    if((*ptr)[i].id == id){ 
     (*ptr).erase((*ptr).begin +i); 
     verif=true; 
     break; 
    } 
    else{ 
     verif=false; 
    } 
} 

但它似乎不工作,因为我在试图运行它时在擦除线中出现此错误:

invalid operands of types '<unresolved overloaded function type>' and 'int' to binary 'operator+' 

如何删除ele矢量?

+2

[OT]你来自C吗?你的代码中有几个C'isms,你不需要在C++中完成。 – NathanOliver

+1

即使在C你可以说'ptr->东西' –

+2

begin()是一种方法吗? – mpiatek

回答

1

不知道什么ptr的是,这是一个有点猜测,但你可能要代替:

(*ptr).erase((*ptr).begin +i); 

这样的:

ptr->erase(ptr->begin() +i); 

开始()是一个功能 - 你代码试图把它当作一个函数指针。

+0

是的,我忘了,ptr来自主体,它是&驱动程序。你的回答是正确的我会给你检查,我一直在这里为了一个简单的()。谢谢 –