Долго думал, в плюсы ли вопрос или сюда, решил сюда.
Есть класс на С++, наываемый cppclass. При помощи boost.python завернут в питоновый одноимённый класс. Находится в модуле mod.
Есть большой контрол на Qt, называемый qControl. Он экспортируется в питон при помощи PythonQt. Среди слотов этого контрола есть такой:
QString test(cppclass x)
В итоге такой код:
from mod import cppclass
c = cppclass(10)
qControl.test(c)
Даёт такой результат:
qControl.test(c)
ValueError: Called QString test(cppclass x) with wrong arguments: (<mod.cppclass object at 0xa37739c>,)
Кто-нибудь из питонщиков подскажет, как можно утрясти разницу типов?
Спасибо.
Здравствуйте, Аноним, Вы писали:
А>Есть класс на С++, наываемый cppclass. При помощи boost.python завернут в питоновый одноимённый класс. Находится в модуле mod.
А>Есть большой контрол на Qt, называемый qControl. Он экспортируется в питон при помощи PythonQt. Среди слотов этого контрола есть такой:
А>QString test(cppclass x)
А как PythonQt интерпретирует эту сигнатуру? Ты cppclass ему как-то показал?
А>from mod import cppclass
А>c = cppclass(10)
А>qControl.test(c)
А>Даёт такой результат:
А>qControl.test(c)
А>ValueError: Called QString test(cppclass x) with wrong arguments: (<mod.cppclass object at 0xa37739c>,)
PythonQt и boost.python друг о друге не в курсе, стало быть не знают что за типы там под python-овскими объектами лежат.
Я бы посоветовал либо писать всё только на PythonQt или только на boost.python, или передавать в test какой-нибудь общий объектный тип, типа python-овского Object-а, и дальше уже пытаться добывать из него исходный С++ный.