On Fri, May 13, 2011 at 9:32 AM, GOO Creations <[email protected]> wrote: > Hi all > > I'm currently writing C++ code that I want to use via Python with SIP. The > following is a skeleton for my code: > > template<class T> > class MyClass > { > MyClass(QString s); > T* calculate(); > } > > class B > { > B(); > void doStuff(); > } > > void B::doStuff() > { > MyClass<int> var(""); > int *var2 = var.calculate(); > } > > The only class I've included in my SIP file is class B (and not class A). > Everything compiles correctly, but when QGIS starts, I get a Python error: > > File "/home/goocreations/apps/share/qgis/python/qgis/utils.py", line 283, > in _import > mod = _builtin_import(name, globals, locals, fromlist, level) > ImportError: /home/goocreations/apps/lib/libqgis_mylib.so.1.7.0: undefined > symbol: _ZN15MyClassIiEC1E7QString
>From the error I would expect that the body of the MyClass(QString s) constructor is missing: you have only declared it. > So, I've though that creating a SIP binding for MyClass may resolve the > issue, but I can't figure out how I would use templates in SIP. SIP refers to template classes as "mapped types". Here you can find some documentation: http://www.riverbankcomputing.co.uk/static/Docs/sip4/directives.html#directive-%MappedType Regards Martin _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
