Что лучший способ состоит в том, чтобы сделать функцией, которая имеет указатель как работу аргумента с Python повышения? Я вижу, что существует много возможностей для возвращаемых значений в документах, но я не знаю, как сделать это с аргументами.
void Tesuto::testp(std::string* s)
{
if (!s)
cout << " NULL s" << endl;
else
cout << s << endl;
}
>>> t.testp(None)
NULL s
>>>
>>> s='test'
>>> t.testp(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Boost.Python.ArgumentError: Python argument types in
Tesuto.testp(Tesuto, str)
did not match C++ signature:
testp(Tesuto {lvalue}, std::string*)
>>>
Насколько я После небольшого поиска в Google по этой теме можно сказать, что вы не можете. По умолчанию Python не поддерживает типы аргументов указателей. Если бы вы хотели, вы, вероятно, могли бы отредактировать интерпретатор python вручную, но мне кажется, что это какой-то производственный код, так что это, вероятно, не вариант.
РЕДАКТИРОВАТЬ : Вы можете добавить такую функцию-оболочку:
std::string * pointer (std::string& p)
{
return &p;
}
Затем вызовите свой код с помощью:
>>> s = 'hello'
>>> t.testp (pointer (s))
hello
>>>