I have a templated c++ array class which uses the standard vector class:
#include
#include
using namespace std;
template
To provide a more generic solution:
%define ArrayExtendVal(name, T)
%extend name {
T getitem(int i) {
return (*self)[i];
}
}
%enddef
%define ArrayExtendRef(name, T)
%extend name {
T& getitem(int i) {
return (*self)[i];
}
}
%enddef
%define ArrayExtendConstRef(name, T)
%extend name {
const T& getitem(int i) {
return (*self)[i];
}
}
%enddef
...
%ignore myNamespace::myClass::operator[]
%include "my_class.h"
ArrayExtendVal(myClass, double);
ArrayExtendRef(myClass, double);
ArrayExtendConstRef(myClass, double);
Note the %ignore directive that is missing in the other answers.