Considerando il codice C++ nel primo snippet di codice riportato di seguito, ricevo gli errori di compilazione indicati nel secondo snippet. Sembra che st mi stia sbagliando quando attraversi l'istanza del vettore. Puoi dirmi come posso superare questi problemi di compilazione? Grazie. LINE 171 è segnato nel codice.Vector Iterator: nessuna corrispondenza per 'operator ='
SNIPPET 1 (Codice)
#include <string>
#include <vector>
#include <iterator>
class VipAddressSetEntity : BaseEntity
{
public:
VipAddressSetEntity() : BaseEntity() { }
VipAddressSetEntity(std::string &uuid, std::string &name) : BaseEntity(uuid, name) { }
VipAddressSetEntity(const VipAddressSetEntity ©in)
{
setUUID(copyin.getUUID());
setName(copyin.getName());
std::vector<VipAddressEntity>::iterator iter;
/* LINE 171 is the following*/
for(iter = copyin.mVipAddressList.begin(); iter != copyin.mVipAddressList.end(); iter++)
{
addVipAddress(*iter);
}
}
VipAddressSetEntity operator = (const VipAddressSetEntity &rhs)
{
setUUID(rhs.getUUID());
setName(rhs.getName());
std::vector<VipAddressEntity>::iterator iter;
for(iter = rhs.mVipAddressList.begin(); iter != rhs.mVipAddressList.end(); iter++)
{
addVipAddress(*iter);
}
return *this;
}
void addVipAddress(VipAddressEntity &entity)
{
mVipAddressList.push_back(entity);
}
VipAddressEntity & getVipAddress(std::string uuid)
{
std::vector<VipAddressEntity>::iterator iter;
for(iter = mVipAddressList.begin(); iter != mVipAddressList.end(); iter++)
{
if(iter->getUUID() == uuid)
{
return *iter;
}
}
return NULL;
}
const std::vector<VipAddressEntity>& getVipAddressList() const { return mVipAddressList; }
private:
std::vector<VipAddressEntity> mVipAddressList;
};
SNIPPET 2 (uscita Compilation)
Entity.hpp: In copy constructor ‘ECLBCP::VipAddressSetEntity::VipAddressSetEntity(const ECLBCP::VipAddressSetEntity&)’:
Entity.hpp:171:44: error: no match for ‘operator=’ in ‘iter = copyin.ECLBCP::VipAddressSetEntity::mVipAddressList.std::vector<_Tp, _Alloc>::begin<ECLBCP::VipAddressEntity, std::allocator<ECLBCP::VipAddressEntity> >()’
Entity.hpp:171:44: note: candidates are:
In file included from /usr/include/c++/4.7/bits/stl_algobase.h:68:0,
from /usr/include/c++/4.7/bits/char_traits.h:41,
from /usr/include/c++/4.7/string:42,
from Entity.hpp:11:
/usr/include/c++/4.7/bits/stl_iterator.h:710:11: note: __gnu_cxx::__normal_iterator<ECLBCP::VipAddressEntity*, std::vector<ECLBCP::VipAddressEntity> >& __gnu_cxx::__normal_iterator<ECLBCP::VipAddressEntity*, std::vector<ECLBCP::VipAddressEntity> >::operator=(const __gnu_cxx::__normal_iterator<ECLBCP::VipAddressEntity*, std::vector<ECLBCP::VipAddressEntity> >&)
/usr/include/c++/4.7/bits/stl_iterator.h:710:11: note: no known conversion for argument 1 from ‘std::vector<ECLBCP::VipAddressEntity>::const_iterator {aka __gnu_cxx::__normal_iterator<const ECLBCP::VipAddressEntity*, std::vector<ECLBCP::VipAddressEntity> >}’ to ‘const __gnu_cxx::__normal_iterator<ECLBCP::VipAddressEntity*, std::vector<ECLBCP::VipAddressEntity> >&’