I had trouble with this myself a few years ago:
http://mail.python.org/pipermail/cplusplus-sig/2006-March/010095.html
(My reaction was a redesign of my parent/child types, so shared pointers
don't explicitly appear in the interfaces anymore.)
- Original Message
From: Eric Jonas
To: cplusplus-sig@python.org
Sent: Sunday, February 1, 2009 7:37:51 AM
Subject: [C++-sig] Shared pointers and new objects
I am trying to return a shared pointer to a class Foo and then
test the results in python for equality, but they always seem to fail.
I've created the following two trivial classes:
class Foo : public boost::noncopyable
{
};
typedef boost::shared_ptr pFoo_t;
class FooCreator
{
public:
pFoo_t createFoo() {
pFoo_t ft(new Foo);
intfoo = ft;
return ft;
}
pFoo_t getFoo() {
return intfoo;
}
pFoo_t intfoo;
};
That I expose with boost::python via:
class_("Foo", no_init);
class_("FooCreator")
.def("createFoo", &FooCreator::createFoo)
.def("getFoo", &FooCreator::getFoo);
Yet the following assert fails:
fc = FooCreator()
foo = fc.createFoo()
foo2 = fc.getFoo()
assert_equal(foo, foo2)
The above assert fails. I've tried using the newest boost::python, I've
looked through the mailing list archives and even asked on IRC, but I
still can't figure out which part of this process I'm doing incorrectly.
I've spent about 20 hours reducing my problem to this test case, and am
really stumped.
...Eric
___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig
___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig