C++鎴愬憳鍑芥暟鎸囬拡濡備綍搴忓垪鍖?
C++涓殑鎴愬憳鍑芥暟鎸囬拡鍙互搴忓垪鍖栦负涓€涓櫘閫氱殑鎸囬拡锛岀劧鍚庡啀閫氳繃璇ユ寚閽堟潵璋冪敤瀵瑰簲鐨勬垚鍛樺嚱鏁般€傚叿浣撴楠ゅ涓嬶細
- 灏嗘垚鍛樺嚱鏁版寚閽堣浆鎹负鏅€氱殑鎸囬拡锛屽彲浠ラ€氳繃绫诲瀷杞崲鏉ュ疄鐜帮紝渚嬪锛?/li>
void (ClassName::*memFuncPtr)(int) = &ClassName::memberFunction;
void* ptr = reinterpret_cast<void*>(memFuncPtr);
- 灏嗘寚閽堝簭鍒楀寲涓哄瓧鑺傛祦锛屽彲浠ラ€氳繃灏嗘寚閽堢殑鍊肩洿鎺ユ嫹璐濆埌涓€涓瓧绗︽暟缁勪腑鏉ュ疄鐜帮細
char serializedData[sizeof(void*)];
memcpy(serializedData, &ptr, sizeof(void*));
- 鍙嶅簭鍒楀寲鏃讹紝灏嗗瓧鑺傛祦杞崲涓烘寚閽堬紝骞跺啀娆¤浆鎹负鎴愬憳鍑芥暟鎸囬拡锛?/li>
void* deserializedPtr;
memcpy(&deserializedPtr, serializedData, sizeof(void*));
void (ClassName::*deserializedMemFuncPtr)(int) = reinterpret_cast<void (ClassName::*)(int)>(deserializedPtr);
- 鏈€鍚庯紝閫氳繃璋冪敤鎴愬憳鍑芥暟鎸囬拡鏉ヨ皟鐢ㄥ搴旂殑鎴愬憳鍑芥暟锛?/li>
ClassName obj;
(obj.*deserializedMemFuncPtr)(42);
闇€瑕佹敞鎰忕殑鏄紝搴忓垪鍖栧拰鍙嶅簭鍒楀寲鎴愬憳鍑芥暟鎸囬拡鍙兘浼氬瓨鍦ㄦ綔鍦ㄧ殑椋庨櫓锛屽洜涓烘垚鍛樺嚱鏁版寚閽堝彲鑳戒細鍙楀埌涓嶅悓缂栬瘧鍣ㄥ拰骞冲彴鐨勫奖鍝嶏紝鎵€浠ュ湪搴忓垪鍖栧拰鍙嶅簭鍒楀寲鏃堕渶瑕佸皬蹇冨鐞嗐€?/p>
相关问答