【问题标题】:Typecasting and assigning a void pointer variable to an Integer variable in VC++.在 VC++ 中,类型转换并将 void 指针变量分配给 Integer 变量。
【发布时间】:2012-04-24 23:20:50
【问题描述】:

我有一个 C++ 函数:

void Func(void* param)
{
   int a;
   a= (int*)param;
}

我认为我所做的 a= (int*)param; 是正确的。但不知道为什么我收到编译错误“无法从 int* 转换为 int。

任何人都可以在这方面帮助我。

提前致谢。

【问题讨论】:

  • 如果你真的打算这样做(你不应该这样做),请使用标题 <cstdint> 中的 std::intptr_t 而不是 int

标签: c++ visual-c++ type-conversion void-pointers


【解决方案1】:

因为aint 而不是int*。你的意思是:

int a;
a = *((int*)param);

改为?

【讨论】:

    【解决方案2】:

    param 转换为(int*) 后,您需要取消引用它以将其用作变量:

    int a;
    int* intParamPtr = (int*)param;
    a = *intParamPtr; // * is dereference operator
    

    【讨论】:

    • 非常感谢您提供有用的信息 :)
    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多