From: SourceForge.net <no...@so...> - 2008-10-16 20:50:53
|
Bugs item #2172868, was opened at 2008-10-16 22:50 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=2172868&group_id=1645 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: python Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Paul E.C. Melis (paulmelis) Assigned to: Nobody/Anonymous (nobody) Summary: %extend overridden method not inherited Initial Comment: When using %extend to "reimplement" a virtual class method in class C, this reimplemented method is not available in subclass D of C but instead behaves as the original method. E.g. (see attached tarball for these files) === classes.h === class C { public: virtual void return_float(float &f) { f = 123; } }; class D : public C { public: virtual void return_float(float &f) { f = 456; } }; === test.i === %module(directors="1") test; %{ #include "classes.h" %} %include "classes.h"; %extend C { // Pythonic way of returning a float PyObject* return_float() { float f; $self->return_float(f); return Py_BuildValue("f", f); } }; When run through swig -c++ -python and GCC 4.1.2 the following then happens: Python 2.5.2 (r252:60911, Oct 16 2008, 21:18:49) [GCC 4.1.2 (Gentoo 4.1.2 p1.1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import test >>> c = test.C() >>> c.return_float() 123.0 >>> d = test.D() >>> d.return_float() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "test.py", line 82, in return_float def return_float(*args): return _test.D_return_float(*args) TypeError: D_return_float() takes exactly 2 arguments (1 given) >>> This used to work (at least in 1.3.29)... ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=2172868&group_id=1645 |