Я работаю над проектом с библиотекой, и я должен работать с профсоюзами. В частности, я работаю с SDL и объединением SDL_Event . Мне нужно сделать копии SDL_Events, и я не смог найти хорошей информации о перегрузке операторов присваивания с объединениями.
При условии, что я могу перегрузить оператор присваивания, должен ли я вручную просеять через членов объединения и скопировать соответствующие члены, или я могу просто прийти к некоторым членам (это кажется мне опасным), или, возможно, просто использовать memcpy () (это кажется просто и быстро, но немного опасно)?
Если я не могу перегрузить операторов, какими будут мои лучшие варианты? Я думаю, что я мог бы сделать новые копии и обойти кучу указателей, но в этой ситуации я бы предпочел не делать этого.
Любые идеи приветствуются!
EDIT:
По запросу сообщений об ошибках, и, кстати, я думаю, что я узнал что-то ...
physworld.cpp:325: error: no match for ‘operator=’ in ‘CurrentEvent = ((physworld*)this)->physworld::SDL_UserInputEvents.std::queue<_Tp, _Sequence>::pop [with _Tp = SDL_Event, _Sequence = std::deque<SDL_Event, std::allocator<SDL_Event> >]()’
/usr/include/SDL/SDL_events.h:220: note: candidates are: SDL_Event& SDL_Event::operator=(const SDL_Event&)
EDIT2:
Это было так глупо ... Я думал, что элемент Deqeues pop () вернул удаленный элемент. Я думал, что код настолько прост, что не может быть моим кодом, но это оказалось неправильно.
мой код выглядел так:
for(SDL_Event CurrentEvent; !DequeueOfSDLEvents.empty(); CurrentEvent = DequeueOfSDLEvents.pop() )
{
//Do stuff
}
Так что, если ничего другого, я научусь более внимательно изучать функции-члены контейнеров, которые я недавно не использовал. Спасибо за объяснение назначения по умолчанию, иначе это заняло бы больше времени.