<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">In sum, the easiest may be to 'hide' the module and deal with this from the R<br>side exposing both variants from there and then just calling the one you have now.</blockquote><div class="gmail_extra"><br></div><div class="gmail_extra">I agree - though I don't think you even need two variants of the C++ function if there's an R function to handle default arguments.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Best,<br clear="all"><div><div class="gmail_signature"><div>--</div>Hao Ye<br><a href="mailto:hye@ucsd.edu" target="_blank">hye@ucsd.edu</a></div></div>
<br><div class="gmail_quote">On Wed, Oct 26, 2016 at 8:53 AM, Dirk Eddelbuettel <span dir="ltr"><<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
On 26 October 2016 at 09:48, Sergio Bra wrote:<br>
| I am exposing a c++ class using Rcpp. It works fantastic, but my problem is how<br>
| to implement a method which has default params. I have the class:<br>
|<br>
| class myClass {<br>
|<br>
|     public:<br>
|     <br>
|         int myMethod(int param1, int param2 = 0);<br>
| }<br>
|<br>
| and I config the module:<br>
|<br>
| RCPP_MODULE(mymodule) {<br>
|     class_<myClass>("myClass")<br>
|         .constructor()<br>
|         .method("myMethod", &myClass::myMethod)<br>
| ;<br>
| }<br>
|<br>
| When I try to execute the function in R passing only the mandatory param I get<br>
| an error because R does not recognize the function, but if I execute it with<br>
| both params, it works great. So, how can I define the method in order to be<br>
| able to execute it without informing the optional params?<br>
<br>
</span>Hm, I have the feeling I am doing that somewhere too.  Did you check existing<br>
packages with modules?<br>
<br>
I just glanced at RcppCNPy and it does it, albeit with free functions.<br>
<br>
You can definitely have multiple constructors, maybe have one with one int<br>
(defaulting value two) and one with two ints?   There are subtle constraints<br>
where because of the _C_ interface so you have to 'waste' two function names<br>
on this.<br>
<br>
In sum, the easiest may be to 'hide' the module and deal with this from the R<br>
side exposing both variants from there and then just calling the one you have now.<br>
<br>
Makes sense?<br>
<span class="gmail-HOEnZb"><font color="#888888"><br>
Dirk<br>
<br>
--<br>
<a href="http://dirk.eddelbuettel.com" rel="noreferrer" target="_blank">http://dirk.eddelbuettel.com</a> | @eddelbuettel | <a href="mailto:edd@debian.org">edd@debian.org</a><br>
______________________________<wbr>_________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org">Rcpp-devel@lists.r-forge.r-<wbr>project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" rel="noreferrer" target="_blank">https://lists.r-forge.r-<wbr>project.org/cgi-bin/mailman/<wbr>listinfo/rcpp-devel</a><br>
</font></span></blockquote></div><br></div></div>