我正在与图书馆合作,我必须与工会合作。具体来说,我正在使用 SDL 和SDL_Event union。我需要制作 SDL_Events 的副本,并且找不到关于使用联合重载赋值运算符的好信息。
假设我可以重载赋值运算符,我应该手动筛选工会成员并复制相关成员,还是我可以简单地来一些成员(这对我来说似乎很危险),或者只是使用 memcpy() (这看起来简单快捷,但有点危险)?
如果我不能重载运算符,那么我最好的选择是什么?我想我可以制作新副本并传递一堆指针,但在这种情况下,我宁愿不这样做。
欢迎任何想法!
编辑:根据要求的错误消息,顺便说一句,我想我学到了一些东西......
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:这太愚蠢了......我认为 Deqeus pop() 成员返回了删除的项目。我以为代码太简单了,不能直接是我的代码,但事实证明这是错误的。
我的代码看起来像:
for(SDL_Event CurrentEvent; !DequeueOfSDLEvents.empty(); CurrentEvent = DequeueOfSDLEvents.pop() )
{
//Do stuff
}
因此,如果不出意外,我将学习更仔细地查看我最近没有使用过的容器的成员函数。感谢您解释默认情况下分配的工作,否则将需要更长的时间才能找到它。