Как получить значение переменной из предопределенной функции C ++, используя Python? - PullRequest
0 голосов
/ 26 апреля 2019

Есть ли способ получить значение переменной из предопределенной функции C ++, используя Python?У меня есть функция C ++, которая принимает variant тип в качестве аргумента.Но мы не можем определить переменную типа variant в python, верно?Я пытался использовать Boost.Python, pybind11.Но так как я не могу редактировать предопределенную функцию, я не могу их реализовать.

Редактировать: у меня есть функция C ++ с именем bcap, которая принимает 2 аргумента и возвращает 2 значения.

# C++ code    
# Takes these arguments
int32 func_id
variant[] vntArgs
---
# Returns these values
int32 HRESULT
variant vntRet

И variant[] vntArgs имеет 2 типа переменных.

int16 vt
string value

И я пытаюсь вызвать эту функцию, используя эти аргументы.

#python code
    func_id = 3
    vt = 8
    value_1 = 'value: b-CAP'
    value_2 = 'CaoProv.DENSO.VRC'
    value_3 = 'localhost'
    value_4 = ''
    vntArgs = [vt, value_1, vt, value_2, vt, value_3, vt, value_4]

    response = bcap(func_id, vntArgs)

    #store the response in some variables
    result1 = response.HRESULT
    result2 = response.vntRet

Проблемакогда я запускаю эту программу, возникает эта ошибка.

AttributeError: 'int' object has no attribute 'vt'

Что мне делать?

Заранее спасибо.

1 Ответ

0 голосов
/ 26 апреля 2019

Вы можете создать несколько отдельных перегрузок, по одной для каждой возможной комбинации варианта.Будет ли это работать?

void actual_function(variant<int, double, string> v) {
    // stuff
}

void your_function(int i) {
    actual_function(i); 
}
void your_function(double d) {
    actual_function(d);
}
void your_function(string const& s) {
    actual_function(s); 
}
...