<div>
                    <font face="Geneva">Hello,</font>
                </div><div><font face="Geneva"><br></font></div><div><font face="Geneva">I'm getting a seg fault when trying to call a virtual method on a base class from python. &nbsp;Code is below:</font></div><div><font face="Geneva"><br></font></div><div><font face="Geneva"><div>#include &lt;memory&gt;</div><div><br></div><div>namespace boost {&nbsp;</div><div>&nbsp; template&lt;class T&gt; const T* get_pointer(const std::shared_ptr&lt;T&gt;&amp; ptr)&nbsp;</div><div>&nbsp; {</div><div>&nbsp; &nbsp; return ptr.get();</div><div>&nbsp; }</div><div><br></div><div>&nbsp; template&lt;class T&gt; T* get_pointer(std::shared_ptr&lt;T&gt;&amp; ptr)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; return ptr.get();</div><div>&nbsp; }</div><div>}</div><div><br></div><div>#include &lt;Python.h&gt;</div><div>#include &lt;boost/python.hpp&gt;</div><div><br></div><div>namespace bp = boost::python;</div><div><br></div><div>class MyBase</div><div>{</div><div>public:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>MyBase(){}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>virtual ~MyBase(){}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>virtual void baseTest() { printf("base test\n"); }</div><div>};</div><div><br></div><div>class MyDerived : public MyBase</div><div>{</div><div>public:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>MyDerived() {}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>virtual ~MyDerived(){}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>void derivedTest() { printf("derived test\n"); }</div><div>};</div><div><br></div><div>BOOST_PYTHON_MODULE(PythonTest)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>bp::class_&lt;MyBase, std::shared_ptr&lt;MyBase&gt;&gt;("MyBase")</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>.def("baseTest", &amp;MyBase::baseTest);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>bp::class_&lt;MyDerived, bp::bases&lt;MyBase&gt;, std::shared_ptr&lt;MyDerived&gt;&gt;("MyDerived")</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>.def("derivedTest", &amp;MyDerived::derivedTest);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>bp::implicitly_convertible&lt;std::shared_ptr&lt;MyDerived&gt;, std::shared_ptr&lt;MyBase&gt;&gt;();</div><div>}</div><div><br></div><div>Does it have to do with using std::shared_ptr for storage? &nbsp;If so is there a way around this? &nbsp;Any help is appreciated. &nbsp;</div></font></div>
                <div><div><br></div>--&nbsp;<br>Gabe Rives-Corbett<br><div><br></div></div>