вызов функции c ++ со ссылочным параметром из cli - PullRequest
4 голосов
/ 12 марта 2010

Неуправляемая функция (чистый c ++, если это имеет значение):

 void fooC(float& result);

Я определяю оболочку как (управляемая оболочка, c ++ \ cli):

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

как передать ссылочный параметр в оболочку?

1 Ответ

5 голосов
/ 12 марта 2010

Нельзя преобразовать ссылку отслеживания в неуправляемую ссылку или указатель. Сборщик мусора может привести к хаосу, если переданное значение типа float является полем в объекте. Вам нужно будет использовать временный:

  void foo(float% result) { 
    float temp;
    fooC(temp); 
    result = temp;
  }
...