Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Chapter 4. Frequently Asked Questions (FAQs)

Boost , Boost.Python , Boost.Python

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Chapter 4. Frequently Asked Questions (FAQs)

Если вы пытаетесь сделать что-то вроде этого:

typedef boost::function<void (string s) > funcptr;
void foo(funcptr fp)
{
  fp("hello,world!");
}
BOOST_PYTHON_MODULE(test)
{
  def("foo",foo);
}

А потом:

>>> def hello(s):
...    print s
...
>>> foo(hello)
hello, world!

Короткий ответ: «Вы не можете». Это не повышение. Ограничение Python — это ограничение C++. Проблема в том, что функция Python — это фактически данные, и единственный способ ассоциировать данные с указателем функции C++ — это хранить его в статической переменной функции. Проблема в том, что вы можете связать только одну часть данных с каждой функцией C++, и у нас нет возможности компилировать новую функцию C++ на лету для каждой функции Python, которую вы решите передать<foo>. Другими словами, это может сработать, если функция C++ всегда будет ссылаться на ту же функциюPython, но вы, вероятно, этого не хотите.

Если у вас есть возможность изменить код C++, который вы заворачиваете, передайте его<object>и вызовите его; оператор вызова перегруженной функции вызовет функцию Python, которую вы передаете ему позади<object>.


PrevUpHomeNext

Статья Chapter 4. Frequently Asked Questions (FAQs) раздела Boost.Python Boost.Python может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Boost.Python ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:15:38/0.0035450458526611/0