Hi all,<br>I have a problem regarding inheritance/polymorphism which I cannot get to the bottom of it.<br>In C++ I have a pure virtual class, lets called it an interface, called &quot;its&quot; and an implementation of it called &quot;ts&quot;.
<br>I exposed the two to python using the &quot;wrapper.hpp&quot; module.<br><br>struct ts_wrapper : its,&nbsp; wrapper&lt;its&gt;<br>{<br>int &nbsp;&nbsp; get_numdates() const {....}<br>}<br><br>typedef boost::shared_ptr&lt;its&gt; ITS;
<br>register_ptr_to_python&lt;ITS&gt;();<br><br>class_&lt;ts_wrapper, boost::noncopyable&gt;(&quot;itimeserie&quot;, &quot;Time serie interface&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .def(&quot;get_numdates&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pure_virtual(&amp;its::get_numdates));
<br><br>class_&lt;ts, bases&lt;ts_wrapper&gt;&gt;(&quot;timeserie&quot;, &quot;An implementation of itimeserie&quot;, init&lt;const list&amp;,const dict&amp;&gt;());<br><br>def(&quot;ts_create&quot;,&amp;timeserieFactory::Create,&quot;Get a time serie&quot;);
<br><br><br>timeserieFactory returns a smart pointer to the interface &quot;its&quot;, ITS.<br><br>Now, in Python, when I create an instance of &quot;timeserie&quot; using the &quot;ts_create&quot; everything works fine, 
i.e. I can call the method &quot;get_numdates&quot; without any problem. However when I create an instance of &quot;timeserie&quot; using the constructor, the object is constructed correctly but when I call &quot;get_numdates&quot; this is what python think about it
<br><br>Boost.Python.ArgumentError: Python argument types in<br>&nbsp;&nbsp;&nbsp; itimeserie.get_numdates(timeserie)<br>did not match C++ signature:<br>&nbsp;&nbsp;&nbsp; get_numdates(class ts_wrapper {lvalue})<br>&nbsp;&nbsp;&nbsp; get_numdates(class its {lvalue})
<br><br>somehow when I use the constructor, the instance is not recognized as derived from the interface.<br>Luca<br><br>