我正在與圖書館合作,我必須與工會合作。具體來說,我正在與SDL和SDL_Event union合作。我需要製作SDL_Events的副本,而且我無法找到有關使用聯合重載賦值運算符的好信息。C++聯合分配,是否有一個很好的方法來做到這一點?
假設我可以重載賦值運算符,我應該手動篩選工會成員並複製相關成員,或者我可以簡單地來一些成員(這對我來說似乎很危險),或者可能只是使用memcpy()(this看起來簡單而快速,但有點危險)?
如果我不能重載操作符,那麼我最好的選擇是從那裏得到什麼?我想我可以製作新的副本並傳遞一堆指針,但在這種情況下,我寧願不這樣做。
任何想法歡迎!
編輯: 的要求錯誤消息,並且順便說一句,我認爲我已經學到了一些東西......
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
}
所以,如果不出意外,我會學着在容器的成員函數更密切地關注我最近沒有使用。感謝解釋分配默認工作,否則它會花費更長的時間才能找到它。
我試過任務,並且它不會編譯,我想有些成員是不可複製的,也許? – Sqeaky 2010-03-17 23:30:23
@Sqeaky向我們顯示錯誤消息。我們無法猜出問題所在。查看文檔SDL_Event中沒有任何內容似乎應該是複製問題。 – 2010-03-17 23:38:06