使用cli中的引用参数调用c ++函数

Ben*_*nny 4 c++-cli pass-by-reference

非托管函数(纯c ++,如果重要的话):

 void fooC(float& result);
Run Code Online (Sandbox Code Playgroud)

我将包装器定义为(托管包装器,c ++\cli):

void foo(float% result) //managed interface, need to pass result back to caller
{
      fooC(???);//how to call unmanaged function?
}
Run Code Online (Sandbox Code Playgroud)

如何在包装器中传递引用参数?

Han*_*ant 5

您无法将跟踪引用转换为非托管引用或指针.当传递的float是对象中的一个字段时,垃圾收集器会造成破坏.你需要使用临时的:

  void foo(float% result) { 
    float temp;
    fooC(temp); 
    result = temp;
  }
Run Code Online (Sandbox Code Playgroud)