pythonboost认为两个转换器是重复的,当它们的模板参数为n时

2024-06-28 12:00:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将这两个转换器添加到我的python boost库版本中。你知道吗

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>

那么,我怎样才能确信这两个转换器是不同的呢?我做错什么了?你知道吗


Tags: returndevicedriverstaticsharedstdpowercast