语境:
我正在实现一个名为 LCIO 的粒子物理库,它是 C++ 代码,但是有一个名为 pyLCIO 的 python 包装器。
当尝试运行一个名为setMomentum()
C++ 的函数时,实现如下所示:
void setMomentum (const float p[3])
简单的浮点数组。
好的python,让我们试试这个:
particle.setMomentum([1.0,2.0,3.0])
问题:
现在这引发了一个错误。这是回溯:
Traceback (most recent call last):
File "driver.py", line 5, in <module>
particle.setMomentum(momentum)
File "/path/to/pyLCIO/base/HandleExceptions.py", line 17, in wrappedMethod
return method(*args, **kargs)
TypeError: none of the 2 overloaded methods succeeded. Full details:
void MCParticleImpl::setMomentum(const float* p) =>
could not convert argument 1
void MCParticleImpl::setMomentum(const double* p) =>
could not convert argument 1
现在这个函数要求一个#1 常量,#2 是对数组头部的引用。我应该如何用 python 做到这一点?
有没有使用 python 包装的 C++ 代码经验的人,知道如何const float*
在 python 中创建一个?
感谢您的任何帮助。
编辑 180314
我试过了:
particle.setMomentum((1.0,2.0,3.0))
无济于事;同样的错误。