如何在C++中转换指针

jac*_*hab 3 c++ types pointers casting

void foo(void **Pointer);

int main ()
{
    int *IntPtr;

    foo(&((void*)IntPtr));
}
Run Code Online (Sandbox Code Playgroud)

为什么我会收到错误?

error: lvalue required as unary ‘&’ operand
Run Code Online (Sandbox Code Playgroud)

谢谢

Meh*_*ari 8

void foo(void **Pointer);

int main ()
{
    int *IntPtr;

    foo((void**)&IntPtr);
}
Run Code Online (Sandbox Code Playgroud)


wor*_*ad3 7

当你这样做

(void*)IntPtr
Run Code Online (Sandbox Code Playgroud)

您创建一个临时变量,它只是一个右值,因此无法解除引用.

你需要做的是:

int main()
{
  int* IntPtr;
  void* VoidPtr = (void*)IntPtr;
  foo(&VoidPtr);
}
Run Code Online (Sandbox Code Playgroud)

或同等学历