Re: [C++-sig] Segmentation Fault with Boost.Python and Inheritance
Yes I'm using GCC 4.7 on OS X. Is there any possible workaround to use inheritance with GCC 4.7? I'm currently using c++11 threads which aren't supported on GCC 4.6 on OS X. -- Gabe Rives-Corbett Cell: (805) 570-8395 On Friday, May 18, 2012 at 6:00 AM, cplusplus-sig-request@python.org wrote:
Send Cplusplus-sig mailing list submissions to cplusplus-sig@python.org (mailto:cplusplus-sig@python.org)
To subscribe or unsubscribe via the World Wide Web, visit http://mail.python.org/mailman/listinfo/cplusplus-sig or, via email, send a message with subject or body 'help' to cplusplus-sig-request@python.org (mailto:cplusplus-sig-request@python.org)
You can reach the person managing the list at cplusplus-sig-owner@python.org (mailto:cplusplus-sig-owner@python.org)
When replying, please edit your Subject line so it is more specific than "Re: Contents of Cplusplus-sig digest..."
Today's Topics:
1. Segmentation Fault with Boost.Python and Inheritance (Gabe Rives-Corbett) 2. Re: Segmentation Fault with Boost.Python and Inheritance (Jonas Wielicki)
----------------------------------------------------------------------
Message: 1 Date: Thu, 17 May 2012 17:42:52 -0400 From: Gabe Rives-Corbett <gabe@gaberivescorbett.com (mailto:gabe@gaberivescorbett.com)> To: cplusplus-sig@python.org (mailto:cplusplus-sig@python.org) Subject: [C++-sig] Segmentation Fault with Boost.Python and Inheritance Message-ID: <61DAADFBCA6D4C468EF8216B42EBAE48@gaberivescorbett.com (mailto:61DAADFBCA6D4C468EF8216B42EBAE48@gaberivescorbett.com)> Content-Type: text/plain; charset="utf-8"
Hello,
I'm getting a seg fault when trying to call a virtual method on a base class from python. Code is below:
#include <memory>
namespace boost { template<class T> const T* get_pointer(const std::shared_ptr<T>& ptr) { return ptr.get(); }
template<class T> T* get_pointer(std::shared_ptr<T>& ptr) { return ptr.get(); } }
#include <Python.h> #include <boost/python.hpp>
namespace bp = boost::python;
class MyBase { public: MyBase(){} virtual ~MyBase(){}
virtual void baseTest() { printf("base test\n"); } };
class MyDerived : public MyBase { public: MyDerived() {} virtual ~MyDerived(){}
void derivedTest() { printf("derived test\n"); } };
BOOST_PYTHON_MODULE(PythonTest) { bp::class_<MyBase, std::shared_ptr<MyBase>>("MyBase") .def("baseTest", &MyBase::baseTest);
bp::class_<MyDerived, bp::bases<MyBase>, std::shared_ptr<MyDerived>>("MyDerived") .def("derivedTest", &MyDerived::derivedTest);
bp::implicitly_convertible<std::shared_ptr<MyDerived>, std::shared_ptr<MyBase>>(); }
Does it have to do with using std::shared_ptr for storage? If so is there a way around this? Any help is appreciated.
-- Gabe Rives-Corbett
On 19.05.2012 00:43, Gabe Rives-Corbett wrote:
Is there any possible workaround to use inheritance with GCC 4.7? I know of none, sorry. I'd like to use more c++11 features too, but for now I am forced to stick with 4.6.3. I am working on a bugreport on that topic though. However, my time is pretty limited currently, so it might take another few days until I get it submitted.
-- Jonas
participants (2)
-
Gabe Rives-Corbett -
Jonas Wielicki