我在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);
但它不起作用。任何想法???
答案 0 :(得分:0)
我选择使用phppointers.i和REF
typemap来创建使用引用的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";
?>