c++ - Pass vector of pointers by reference and replace a vector of void* pointers -


i have following structure:

typedef struct{ int pkttype; void* sourcepeer; void* destpeer; void* aboutpeer; int tree; std::vector<int> cogsize; //leave ? std::vector<void*> newparents; //join_rep }packet; 

in addition, have class named base_peer declared follows:

class base_peer {     ... public: virtual void createmessage(int, base_peer*, base_peer*, base_peer*, int, std::vector<int>&, std::vector<base_peer*>&, packet*);     ... } 

and createmessage() function defined follows:

void base_peer::createmessage(int msgtype, base_peer* msgsourcepeer, base_peer* msgdestpeer, base_peer* msgaboutpeer, int msgabouttree, std::vector<int>& msgcogsize, std::vector<base_peer*>& newparents, packet* newpacket) {     newpacket->pkttype = msgtype;     newpacket->sourcepeer = msgsourcepeer;     newpacket->destpeer = msgdestpeer;     newpacket->aboutpeer = msgaboutpeer;     newpacket->tree = msgabouttree;     newpacket->cogsize = msgcogsize;     newpacket->newparents = newparents; }      

i want createmessage create packet structure , assign values elements. more specifically, errors happen when try assign vector std::vector<void*> newparents vector std::vector<base_peer*>& newparents.

i following errors eclipse:

no known conversion argument 1 'std::vector' 'const std::vector&'

std::vector<_tp, _alloc>& std::vector<_tp, _alloc>::operator=(const std::vector<_tp, _alloc>&) [with _tp = void*; _alloc = std::allocator]

no match 'operator=' in 'newpacket->packet::newparents = newparents' base_peer.cpp

i appreciate help.

you'll have copy elements on manually, or using iterators. simplest way use assign member function of std::vector.

newpacket->newparents.assign(newparents.begin(), newparents.end()); 

this works because pointer directly convertible void pointer. if converting from void pointers, need use cast, std::transform.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -