reinterpret-cast

    -1热度

    2回答

    我不知道如果这个问题here回答这个问题,由于怪异的措辞,但: 如果我有: struct numpair { some_type_with_a_size_of_2 a,b; }; struct bignum { some_type_with_a_size_of_4 a; }; 我可以reinterpret_cast一个向量的数字向量numpairs?如果没有,是

    1热度

    1回答

    我尝试做一些简单的事情:我有2个函数,第一个生成2个char数组,然后1个int然后连接它们,reinterpret_cast作为void*并返回它。 第二个将它重新解释为char*并打印出来。 问题是:如果我将它重新解释为char*并在void*强制转换之后打印它(在同一函数中),但它运行良好,但不在反序列化函数中。 这里是我的代码: #include <sstream> #include <

    1热度

    2回答

    我想了解如何初始化字符数组以及数据如何存储。 我做了一个测试,这是怎么一回事呢 struct test { char one [2]; char two [2]; char three[2]; }; test * testptr; char testchar[] = "hello"; testptr = reinterpret_cast<test*>(

    0热度

    1回答

    我想要写简单的C++包装(用于RAII目的)围绕以下C API的数组: typedef void* T; T createT(Arg arg); int foo(T t); closeT(T t); int bar(const T* ptrToArrayOfT, unsigned long size); 对于前三种功能很简单(对于shortiness我省略检查错误和引发异常): cl

    1热度

    2回答

    考虑下面的程序: #include <iostream> void foo() { } int main() { std::cout<<static_cast<void*>(foo); } 它编译罚款VC++但g++ & clang++给出编译错误。 见现场演示here(VC++) 见现场演示here(clang++) 见现场演示通过g++ & clang++给出here(g+

    -1热度

    1回答

    上 cppreference.com严格别名规则 一两个例外说: AliasedType是(可能被cv修饰)DynamicType AliasedType和DynamicType都(可能是多层次的,有可能CV-合格每一级)指向相同类型T(因为C++ 11) 我不清楚地理解迪菲在这些案件之间保持一致。 例如: struct B { virtual ~B() {} }; struct D : B {

    2热度

    1回答

    我有两个模板类作为外部和内部。我是从其他内部类对象类型转换为内部类。我收到编译错误。如何解决这个问题? template<typename O> struct outer { template<typename I> struct inner { }; inner<int> *ptr; outer(); };

    -1热度

    1回答

    我尝试以下方法句柄转换为void *,然后返回到处理以下方式 uint64_t hInt = 154071804376; //assume this is a valid memory location void* hPoint = reinterpret_cast<void*>(hInt); uint64_t hIntBack = *static_cast<uint64_t*>(hPoi

    2热度

    2回答

    设置是我有一个对象,并在该对象下面是一个秘密指针。 这个指针指向的是同一个类的一个对象,但是它的对象不是上面那个对象。 我有一个函数,它接受顶部对象并使用指针算术来获取它下面的指针。 然后在这个函数里我想修改隐藏指针指向的对象的值。 在调试中,我可以看到在函数中正在修改的值就好了,但是一旦函数返回值不会被保留。 我无法理解为什么。 任何想法? 另外我拥有所有这些对象和指针正在创建的内存,所以我不认

    0热度

    1回答

    我正在维护一些代码,并且在升级到较新的编译器Visual Studio 2015后,我得到一个编译器警告,其中FT_HANDLE被转换为LPLONG。 执行此转换并删除警告的安全方法是什么? #include <Windows.h> #include <iostream> typedef PVOID FT_HANDLE; void convert(FT_HANDLE ftHandle,