2010-09-21 4 views
2

Я хочу обернуть вектор векторов C++ в код Python с помощью SWIG.Wrap std :: vector of std :: vectors, C++ SWIG Python

Можно ли обертывать вектор этого вектора векторов?

std::vector<std::vector<MyClass*>>; 

В файле интерфейса MyApplication.i я добавил эти строки:

%include "std_vector.i" 
%{ 
#include <vector> 
%} 

namespace std { 
    %template(VectorOfStructVector) vector<vector<MyClass*>>; 
} 

Но, я получаю сообщение об ошибке, когда SWIG выполняется. Я в состоянии обернуть этот тип (используя ссылку на вектор):

std::vector<std::vector<MyClass*>*>; 

Но, это не работает должным образом, я не могу получить доступ к детали. Вот почему меня интересует этот тип (без ссылки):

std::vector<std::vector<MyClass*>>; 

Любые идеи?

+2

Если это действительно C++, а не C++ 0x, убедитесь, что вы включили пробел между скобами закрытия угла. например '>>' должно быть '>>' –

+1

Я обсуждал, чтобы прокомментировать или ответить ... –

+1

Дубликат http://stackoverflow.com/questions/3754922/how-to-wrap-ac-vector-of-vector -with-swig? –

ответ

3

Это проблема синтаксического анализа на C++?

std::vector<std::vector<MyClass*> >; 
---Important space---------------^ 
+0

Спасибо, Джон и Чарльз !!! Работает! Это было пустое пространство ... – Javier

+0

Также эта строка была необходима в файле интерфейса:% template (VectorOfStructVector) vector >; – Javier

+0

@Javier, другое решение заключается в компиляции с «--std = C++ 0x», если вы используете gcc. C++ 0x исправил эту проблему. –

Смежные вопросы