Обертывание функции-члена шаблона C++, которая возвращает указатель с помощью Boost Python
Я обертываю класс C++ и открываю API для Python с помощью Boost Python. Однако я столкнулся с проблемой. У меня есть функция-член шаблона, которая возвращает указатель на переменную-член. Мне нужна функция, чтобы вернуть указатель, так как функция выполняет некоторую проверку ошибок и возвращает ноль, если произошла ошибка. В настоящее время мне не повезло в обёртывании этой функции с помощью Boost Python.
Пример Class и Boost Python Wrapping:
class MyClass{
private:
boost::any value;
public:
template<typename DataType>
const DataType* GetValue();
// Performs some error checks and returns a pointer to the value variable.
// Returns null if failed error checks
}
BOOST_PYTHON_MODULE(mod_name)
{
class_<MyClass>("MyClass")
.def("GetValue", ??? How to wrap this function)
;
}
Я не уверен, как обернуть функцию GetValue, чтобы выставить ее на Python. Сначала я подумал о том, чтобы иметь промежуточную функцию, обертывающую функцию GetValue, которую можно использовать для возврата разыменованного указателя или объекта Python None, если указатель имеет значение Null. Затем предоставьте эту промежуточную функцию Python. Тем не менее, я не уверен, как это сделать правильно. Любая помощь с благодарностью.
Теперь я посмотрел на решение, обрисованное в общих чертах здесь. Представление функций C++, которые возвращают указатель с использованием Boost.Python, но это не совсем подходит для моего случая, который я чувствую.