Python Boost认为两个转换器是重复的,当它们的模板化参数不是时

时间:2015-07-29 18:39:09

标签: python c++ boost boost-python

我正在尝试将这两个转换器添加到我的python boost-library版本中。

std::tr1::shared_ptr<sbcp::Device> cast_pointer_motor(std::tr1::shared_ptr<sbcp::amarsi::MotorDriver> driver){
    return std::tr1::static_pointer_cast<sbcp::Device>(driver);
}

std::tr1::shared_ptr<sbcp::Device> cast_pointer_power(std::tr1::shared_ptr<sbcp::amarsi::Power> driver){
    return std::tr1::static_pointer_cast<sbcp::Device>(driver);
}

def("deviceMotorPtrCast",&cast_pointer_motor);
def("devicePowerPtrCast",&cast_pointer_power);

它们几乎相同,只是函数参数中的模板不同。

但是,在python中加载这个库时,我得到了异常:

test.py:1: RuntimeWarning: to-Python converter for std::tr1::shared_ptr<sbcp::Device> already registered; second conversion method ignored.

导致这种情况进一​​步下降

TypeError: No to_python (by-value) converter found for C++ type: std::tr1::shared_ptr<sbcp::amarsi::Power>

那么,我怎么能说服那两个转换器实际上不同呢?我做错了什么?

0 个答案:

没有答案