0

我在我的 php 代码中调用引用有一个严重的问题。我用 swig 包装了我的 c++ 类并想调用该方法,在阅读了手册后我发现,在 SWIG 中,当 c++ 参数中有引用时,我们有:

class foo {
Public;
double bar(double &a);
}

在 swig 包装类中,我们有:

double foo_bar(foo *obj,double *a) {
obj->bar(*a);}

我完全理解,我的问题是如何在 PHP 代码中调用方法栏?我开始:

$ptr_a = &$a
$obj->bar($ptr_a);

但它不起作用。任何想法???

4

1 回答 1

0

我尝试使用 phppointers.i 和REFtypemap 来创建使用 PHP 引用概念的东西。我无法让它工作,但是使用 cpointer.i 处理此类事情的标准、语言中立的 SWIG 方法工作得很好:

%module test

%include <cpointer.i>

%pointer_class(double,Double);

%inline %{
  void func(double& a) {
    a = -666.0;
  }
%}

按预期工作:

<?php
include('test.php');
echo "testing\n";
$a=new Double(0.0);
test::func($a);
echo "In PHP: " . $a->value() . "\n";
?>
于 2012-09-14T14:31:32.590 回答