SWIG: переменная массива C ++ в список Python - PullRequest
1 голос
/ 20 октября 2019

Я пытаюсь обернуть код C ++ с помощью SWIG3.0. У меня есть класс внутри пространства имен с 2d массивом. Мне нужно получить доступ к значениям. У меня есть что-то вроде этого:

//example.cpp

namespace n {
    class c {
        double x[2][2] = {
                          {1, 2},
                          {3, 4}
                         };
    };
};

Я попробовал это в моем файле интерфейса Swig:

//interface.i
...
%typemap(out) double n::c::x[2][2] {
    int i,j;
    for (i = 0; i < $dim0; i++)
        for (j = 0; j < $dim1; j++) {
            $result[i][j] = *($1+$dim1*i+j);
        }
}
...

Когда я пытаюсь получить доступ к значениям, я получаю следующую ошибку:

<Swig Object of type 'double (*)[2]' at 0x7f4295431fc0>
>>> x[0][0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'SwigPyObject' object is not subscriptable

Чего мне не хватает?

...