我在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);
但它不起作用。知道吗???
我尝试使用phppointers.I和REF
类型映射来创建使用PHP引用概念的东西。我无法做到这一点,但使用cpointer处理此类问题的标准、语言中立的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";
?>