pointer-conversion

    0熱度

    1回答

    假設我有一個有效的指針p0: T a[10]; T* p0 = &a[0]; 我知道,我可以放心地往返投這樣的: reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0)) == p0; 但是,它的安全做到以下幾點? T* p1 = reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0) +

    3熱度

    1回答

    C++有static_cast將base_class_pointer轉換爲derived_class_pointer。 這是非常類似的操作,將object_data_member_pointer轉換爲object_pointer。 我寫了函數ConvertDataMemberPtrToObjectPtr使用不安全的C類型轉換。 這怎麼能以安全的方式完成?鏈接到成員必須被指定爲模板參數member_

    4熱度

    1回答

    我讀了一本書叫C++ Gotchas這也解釋了常量指針之間的轉換,我遇到了一些麻煩了解以下規則: 兩個指針類型T1和T2是類似,如果存在一個類型T和 整數n> 0,使得: T1是CV 1,0指針CV 1,1指針。 。 。 CV 1,n-1個 指針CV 1,N t個 和, T2是CV 2,0指針CV 2,1指針。 。 。 CV 2,n-1個 指針CV 2,N t個 其中每個CVI,j是常量,易失性,

    1熱度

    1回答

    當試圖編譯的Protobuf-2.6.1在Solaris 10 SPARC 64,我得到: ./google/protobuf/stubs/once.h: In function `void google::protobuf::GoogleOnceInit(google::protobuf::ProtobufOnceType*, void (*)())': ./google/protobuf/s

    2熱度

    1回答

    編寫一個函數回調函數庫,我經常對具有相同調用約定和相同簽名的類型進行類型化(和調用)函數指針,但有一個例外:它們具有參數指向到不同類型(所有數據)或無效指針。 最近,我發現它可能不是安全的,根據這個:https://stackoverflow.com/a/14044244/3079266 基本上,我的理解是,如果參數類型是兼容的,這意味着該函數指針類型也兼容,應該沒有問題。 現在,我有3個問題。