Аргумент указателя для повышения Python

Что лучший способ состоит в том, чтобы сделать функцией, которая имеет указатель как работу аргумента с 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*)
>>>                        
5
задан piotr 5 March 2010 в 09:06
поделиться

1 ответ

Насколько я После небольшого поиска в Google по этой теме можно сказать, что вы не можете. По умолчанию Python не поддерживает типы аргументов указателей. Если бы вы хотели, вы, вероятно, могли бы отредактировать интерпретатор python вручную, но мне кажется, что это какой-то производственный код, так что это, вероятно, не вариант.

РЕДАКТИРОВАТЬ : Вы можете добавить такую ​​функцию-оболочку:

 
std::string * pointer (std::string& p)
{
    return &p;
}

Затем вызовите свой код с помощью:


>>> s = 'hello'
>>> t.testp (pointer (s))
hello
>>>

4
ответ дан 15 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: