<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
Self is indeed a PyObject* <br><br>this is a bit confusing<br><br><div>&gt; Date: Fri, 26 Aug 2011 13:00:11 -0700<br>&gt; From: talljimbo@gmail.com<br>&gt; To: cplusplus-sig@python.org<br>&gt; Subject: Re: [C++-sig] Boost Python loss of values<br>&gt; <br>&gt; On 08/26/2011 08:27 AM, Jay Riley wrote:<br>&gt; &gt; Hi Jim,<br>&gt; &gt;<br>&gt; &gt; Thanks for the suggestion, unfortunately it didn't work. It really feels<br>&gt; &gt; like it's making a copy for some reason as once I return to the<br>&gt; &gt;<br>&gt; &gt; int AttackWrapper::CalculateDamage(const<br>&gt; &gt; std::vector&lt;Game::Battles::BattleCharacter*&gt;&amp; users,<br>&gt; &gt; Game::Battles::BattleCharacter* target, const<br>&gt; &gt; std::vector&lt;Actions::ActionTarget&gt;&amp; targets, Game::Battles::BattleField<br>&gt; &gt; *field)<br>&gt; &gt; {<br>&gt; &gt; return call_method&lt;int&gt;(self, "CalculateDamage", users, ptr(target),<br>&gt; &gt; targets, ptr(field));<br>&gt; &gt; }<br>&gt; &gt;<br>&gt; &gt; function, the value are back to their expected value. Slicing wouldn't<br>&gt; &gt; be a problem here would it, since Hit is a member of the base class anyways?<br>&gt; &gt;<br>&gt; <br>&gt; Yes, that's right.  What exactly is "self", above?  I assume it's a data <br>&gt; member of AttackWrapper of type PyObject *, which shouldn't produce a <br>&gt; copy, but if it's something else, well, that could be a factor.<br>&gt; <br>&gt; Jim<br>&gt; <br>&gt; <br>&gt; <br>&gt; &gt;  &gt; Date: Thu, 25 Aug 2011 13:18:04 -0700<br>&gt; &gt;  &gt; From: talljimbo@gmail.com<br>&gt; &gt;  &gt; To: cplusplus-sig@python.org<br>&gt; &gt;  &gt; CC: super24bitsound@hotmail.com<br>&gt; &gt;  &gt; Subject: Re: [C++-sig] Boost Python loss of values<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; On 08/25/2011 04:17 AM, Jay Riley wrote:<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; &gt;<br>&gt; &gt;  &gt; &gt; And the python exposing is done as follows:<br>&gt; &gt;  &gt; &gt;<br>&gt; &gt;  &gt; &gt; class_&lt;Attack, AttackWrapper, boost::shared_ptr&lt;Attack&gt;, bases&lt;Action&gt;<br>&gt; &gt;  &gt; &gt; &gt;("Attack")<br>&gt; &gt;  &gt; &gt; .def("CalculateDamage", &amp;AttackWrapper::CalculateDamageDefault);<br>&gt; &gt;  &gt; &gt;<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; This bit looks a little suspect, and I'm surprised that it compiles -<br>&gt; &gt;  &gt; class_ should only take 4 arguments if one of them is boost::noncopyable.<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; I think you mean:<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; class_&lt; Attack, boost::shared_ptr&lt;AttackWrapper&gt;, bases&lt;Action&gt; &gt;<br>&gt; &gt;  &gt; (...)<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; See<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; http://www.boost.org/doc/libs/1_47_0/libs/python/doc/v2/class.html<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; for details of the arguments to class_.<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; I don't have a good idea as to why this would cause the problem you're<br>&gt; &gt;  &gt; seeing (maybe you're slicing your AttackWrapper instances into Attack<br>&gt; &gt;  &gt; instances?) but I'd recommend fixing it first.<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; Good Luck!<br>&gt; &gt;  &gt;<br>&gt; &gt;  &gt; Jim Bosch<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________<br>&gt; &gt; Cplusplus-sig mailing list<br>&gt; &gt; Cplusplus-sig@python.org<br>&gt; &gt; http://mail.python.org/mailman/listinfo/cplusplus-sig<br>&gt; <br>&gt; _______________________________________________<br>&gt; Cplusplus-sig mailing list<br>&gt; Cplusplus-sig@python.org<br>&gt; http://mail.python.org/mailman/listinfo/cplusplus-sig<br></div>                                               </div></body>
</html>