<div dir="ltr"><div dir="ltr" style="font-size:12.8px"><p class="gmail-m_4401320391454317942gmail-p1"><span class="gmail-m_4401320391454317942gmail-s1">Hi Phil,</span></p><p class="gmail-m_4401320391454317942gmail-p1"><span class="gmail-m_4401320391454317942gmail-s1">Default constructor isn’t auto generated by the compiler because there already exists a parameterized constructor in the class (just not a default constructor). I am not exposing that parameterized constructor via SIP because I only want to get at BundleImage's attributes (hence why its not in the SIP file). Instances are generated elsewhere in another C++ class. That other class creates instances which is stored as a member variable which we want to access via Python. For our use case we don’t want to create instances directly in Python. </span></p></div><div class="gmail-yj6qo gmail-ajU" style="font-size:12.8px"></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 4, 2017 at 3:14 AM, Phil Thompson <span dir="ltr"><<a href="mailto:phil@riverbankcomputing.com" target="_blank">phil@riverbankcomputing.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 4 Feb 2017, at 1:31 am, Kelvin Rodriguez <<a href="mailto:kr788@nau.edu">kr788@nau.edu</a>> wrote:<br>
><br>
> Hi all,<br>
><br>
><br>
><br>
> I am trying to wrap fairly large C++ api using SIP. In trying to build the module, I get the error:<br>
><br>
><br>
><br>
> ./sipbundleIsisBundleImage.<wbr>cpp: In function ‘void* array_Isis_BundleImage(Py_<wbr>ssize_t)’:<br>
><br>
> ./sipbundleIsisBundleImage.<wbr>cpp:86:43: error: no matching function for call to ‘Isis::BundleImage::<wbr>BundleImage()’<br>
><br>
>     return new Isis::BundleImage[sipNrElem];<br>
><br>
><br>
><br>
> We do not user the default contractor in our codebase, so one does exist for the class BundleImage. It seems like SIP requires there to exist a default constructor for the wrapped class? This can be fixed easily by adding a default contractor to the C++ class being wrapped, but I would like to avoid it if possible.<br>
><br>
><br>
><br>
> My questions are: Does SIP allow for a clean way to eliminate this error without changing the codebase being wrapped? Does SIP actually require a default constructor or is there something I am doing wrong?<br>
><br>
><br>
><br>
> The .sip for bundle Image is as barebones as the class:<br>
><br>
><br>
><br>
> namespace Isis {<br>
><br>
>  class BundleImage {<br>
><br>
>  %TypeHeaderCode<br>
><br>
>    #include "BundleImage.h"<br>
><br>
>  %End<br>
><br>
><br>
><br>
>  public:<br>
><br>
><br>
><br>
>    QString serialNumber();<br>
><br>
>    QString fileName();<br>
><br>
>  };<br>
><br>
> };<br>
<br>
</div></div>C++ will generate a default ctor in the above case which SIP will create a wrapper for. If the above fails then it suggests your C++ is actually disabling the default ctor - so you should reflect that in the .sip file.<br>
<span class="HOEnZb"><font color="#888888"><br>
Phil</font></span></blockquote></div><br></div></div>