Функция экспорта шаблона - PullRequest
1 голос
/ 28 мая 2011

У меня есть шаблонная функция connect:

template<class InstanceClass>
CL_Slot connect (InstanceClass *instance, void(InstanceClass::*function)(Param1, Param2))

Она подключается для некоторой функции передачи сигнала от InstanceClass.

В моем примере я хочуподключить некоторые классы для события клавиатуры (KeyDown).В c ++ я пишу:

get_signal_object().connect(&SomeClass::func);

Но я должен использовать эту функцию в python-скрипте с экспортом из кода c ++ (используя boost.python).

Как я знаю, чтобы экспортировать шаблонЯ должен экспортировать его, передавая любой используемый тип.Но в Python я передам классы, которые существуют только в пространстве имен Python.

Итак, есть ли идеи, как использовать эту функцию на языке Python?

1 Ответ

1 голос
/ 28 мая 2011

Почему бы вам просто не добавить

extern template<>
    CL_Slot connect<SomeClass> (SomeClass *instance, void(InstanceClass::*function)(Param1, Param2));

примечание: extern может понадобиться после template<> - не помню

Если вам нужна связь C, добавьте функцию-обертку (она встроит шаблонную функцию).


Примечание: MSVC имеет нестандартные возможности экспорта шаблонов

C ++ 0x имеет предстоящую поддержку внешних шаблонов: http://en.wikipedia.org/wiki/C%2B%2B0x#Extern_template

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...