我使用模板聯盟來保證我自己,我總是得到一個指針64位字段(即使在32位機器上,因爲有數據傳輸到64位機器發生)並保存用戶和我自己的演員。設置默認聯盟成員
template <typename type> union lrbPointer
{
uint64_t intForm;
type ptrForm; //assumed that type is a pointer type
};
//usage
lrbPointer<int*> myPointer;
int integers[4];
myPointer.ptrForm = integers;
myPointer.intForm += 2; //making it easy to jump by less then sizeof(int)
這對我很好,但我真的很想找到一種方法來使默認成員。以便用戶不需要在想要使用的指針後面使用.ptrForm。
你不能這樣做(默認聯盟成員),我看不出有什麼幫助。如果您在兩臺機器之間傳輸指針值,那麼即使它們是相同的架構,該值也不會影響另一臺計算機上的任何內容,因此您的數據傳輸/存儲策略聽起來有點不妥。 – 2009-08-16 22:30:31
我正在詢問接收機器的內存地址,它將啓動數據塊,並利用這些信息我可以計算接收機器上的指針。它當然會使發送機器上的所有內容都無法讀取,但我的目標是在發送機器上執行更多的工作,因爲兩臺機器上的處理器和環境差別很大。 此刻此問題只是一個令用戶看起來令人困惑的代碼問題,我的功能正常。 – Adam 2009-08-17 17:40:00