Vector erase 錯誤訊息
實做把struct 塞進去 vector的時候,發現一個小問題。
檢視純文字版列印?
class TCP
{
private:
AnsiString cv_Name;
vector <TCP> cv_tmp;
void __fastcall test(const unsigned int Index, const TCP& Item);
public:
AnsiString atmp;
//__property AnsiString Name = {read=cv_Name,write=cv_Name}; //註解取消編譯會有異常產生,原因不明
};
void __fastcall TCP::test(const unsigned int Index, const TCP& Item)
{
cv_tmp.erase(&cv_tmp[Index]);
}
上面是我的code,當__property AnsiString Name 存在的時候,
cv_tmp.erase(&cv_tmp[Index]);
這一行就會出現 E2328 Classes with properties cannot be copied by value的錯誤訊息。
並不知道為啥米而產生,不知道各位大大在撰寫程式的時候有無發生類似的情況?
[解决办法]
cv_tmp.erase(&cv_tmp[Index]);
错误,参数是迭代器。你给的参数是地址。
cv_tmp.erase( cv_tmp.begin() + Index );