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个问题。