Boost logo

Boost Users :

From: Anand, Kumar (kanand_at_[hidden])
Date: 2006-05-17 13:29:54


Hi,

A class has static method to create and a static method to destroy. And
the constructors and destructor of the class is marked as private. How
do I expose such a class in Python?

Eg.

class A {
   private:
             static A* instance;
         A() { };
              ~A {};
   public:
           static A* create ()
{
     If(instance != 0)
                          instance = new A();
                     return instance;
                }
            static void destroy()
            {
                 delete instance;
                  instance = 0;
             }
};

In Boost Python, I tried the following but the code doesn't compile
unless I make the destructor of class A as public.

namespace bp = boost::python;

bp::class_<A> ("A", bp::no_init)
       .def("create", &A::create)
       .def("destroy", &A::destroy)
        .staticmethod("create")
        .staticmethod("destroy")
    ;

Any suggestions?

Thanks
Kumar



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net