我使用模板联盟来保证我自己,我总是得到一个指针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