Hi Romain,<br><br>glad to hear that! Although I solved my original problem with the workaround described, I would be happy to do some testing when you have a solution. <br><br><div class="gmail_quote">On Fri, Jul 8, 2011 at 2:00 PM, Romain Francois <span dir="ltr">&lt;<a href="mailto:romain@r-enthusiasts.com">romain@r-enthusiasts.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Le 07/07/11 15:18, Romain Francois a écrit :<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Le 15/06/11 14:57, Douglas Bates a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Wed, Jun 15, 2011 at 6:38 AM, Jonas<br>
Rauch&lt;<a href="mailto:jonas.rauch@googlemail.com" target="_blank">jonas.rauch@googlemail.<u></u>com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hey again,<br>
<br>
just to clarify: The final solution was to implement all methods of the<br>
derived class that are to be exposed to R and to call the method of<br>
the base<br>
class explicitly:<br>
<br>
class Bar : public Foo {<br>
...<br>
void doSomething() { Foo::doSomething() }<br>
};<br>
</blockquote>
<br>
Yes, we&#39;ve been there before. According to Romain, it would be very<br>
tricky to expose the method of the underlying class through the<br>
derived class but it has been done in module bindings in Python, on<br>
which Romain patterned some of the Rcpp modules code.<br>
</blockquote>
<br>
It is just that I need time to steal that from Boost.Python.<br>
<br>
This is one of the improvements I want to do in modules.<br>
</blockquote>
<br></div>
This is now on a background thread in my head so that I can have dreams/nightmares about it. I failed a few times yesterday evening and this morning, but I can feel I&#39;m getting closer to at least know how to do it.<div>

<div></div><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


On Wed, Jun 15, 2011 at 7:16 AM, Jonas Rauch&lt;<a href="mailto:jonas.rauch@googlemail.com" target="_blank">jonas.rauch@googlemail.<u></u>com</a>&gt;<br>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Actually, having just the declaration like this compiled fine but and<br>
ended up in an unresolved symbol when loading the library.<br>
<br>
class Bar : public Foo {<br>
...<br>
void doSomething();<br>
void Action() {<br>
[some code here]<br>
}<br>
};<br>
<br>
<br>
<br>
I actually had to implement doSomething and explicitly call the<br>
Method of<br>
the Base class:<br>
<br>
class Bar : public Foo {<br>
...<br>
void doSomething() { Foo::doSomething() }<br>
void Action() {<br>
[some code here]<br>
}<br>
};<br>
<br>
<br>
Since I do not know the internals of Rcpp modules: how hard would it<br>
be to<br>
include support for derived classes?<br>
<br>
Best regards,<br>
Jonas<br>
<br>
On Tue, Jun 14, 2011 at 7:36 PM, Dirk Eddelbuettel&lt;<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>&gt;<br>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Hi Jonas,<br>
<br>
On 14 June 2011 at 19:06, Jonas Rauch wrote:<br>
| I am trying to write an R interface to a library that uses derived<br>
classes in<br>
| the following manner:<br>
|<br>
| class Foo {<br>
| ...<br>
| virtual void Action() = 0;<br>
| void doSomething() {<br>
| Action();<br>
| [do complicated stuff]<br>
| }<br>
| ...<br>
| };<br>
|<br>
| class Bar : public Foo {<br>
| ...<br>
| void Action() {<br>
| [some code here]<br>
| }<br>
| };<br>
|<br>
| class Baz : public Foo {<br>
| ...<br>
| void Action() {<br>
| [some other code here]<br>
| }<br>
| };<br>
|<br>
| etc.<br>
|<br>
| Where the abstract class Foo defines an interface and at the same<br>
time<br>
provides<br>
| base functionality that can then be applied to different<br>
implementations of<br>
| &quot;Action&quot;.<br>
|<br>
| Is it possible to expose Bar::doSomething() to R using Rcpp<br>
modules? I<br>
have<br>
| tried different things and did not get it to work.<br>
<br>
Nice C++ design. And it should work, but I think your only choice<br>
really<br>
is<br>
list all exposed functions, ie your need an explicit mention of<br>
Bar::doSomething as well as Baz::doSomething. That way Rcpp Modules<br>
doesn&#39;t<br>
even know these are derived class. It just seens two identifiers to<br>
hook<br>
up<br>
against. As always, I may be missing parts of the picture in which<br>
case<br>
Romain may come forward and correct the record....<br>
<br>
|<br>
| I would appreciate any help.<br>
|<br>
| Best regards,<br>
| Jonas Rauch<br>
|<br>
|<br>
------------------------------<u></u>------------------------------<u></u>----------<br>
| ______________________________<u></u>_________________<br>
| Rcpp-devel mailing list<br>
| <a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">Rcpp-devel@lists.r-forge.r-<u></u>project.org</a><br>
|<br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-<u></u>project.org/cgi-bin/mailman/<u></u>listinfo/rcpp-devel</a><br>
<br>
<br>
--<br>
Gauss once played himself in a zero-sum game and won $50.<br>
-- #11 at <a href="http://www.gaussfacts.com" target="_blank">http://www.gaussfacts.com</a><br>
</blockquote>
<br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">Rcpp-devel@lists.r-forge.r-<u></u>project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-<u></u>project.org/cgi-bin/mailman/<u></u>listinfo/rcpp-devel</a><br>
<br>
<br>
</blockquote>
______________________________<u></u>_________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">Rcpp-devel@lists.r-forge.r-<u></u>project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-<u></u>project.org/cgi-bin/mailman/<u></u>listinfo/rcpp-devel</a><br>
<br>
</blockquote>
<br>
<br>
</blockquote>
<br>
<br>
-- <br>
Romain Francois<br>
Professional R Enthusiast<br>
<a href="tel:%2B33%280%29%206%2028%2091%2030%2030" value="+33628913030" target="_blank">+33(0) 6 28 91 30 30</a><br>
<a href="http://romainfrancois.blog.free.fr" target="_blank">http://romainfrancois.blog.<u></u>free.fr</a><br>
<a href="http://romain-francois.com" target="_blank">http://romain-francois.com</a><br>
|- <a href="http://bit.ly/lJoWbH" target="_blank">http://bit.ly/lJoWbH</a> : Montpellier Comédie Club - Juin 2011<br>
|- <a href="http://bit.ly/kaSV6U" target="_blank">http://bit.ly/kaSV6U</a> : Stand up set at Up The Creek<br>
`- <a href="http://bit.ly/hdKhCy" target="_blank">http://bit.ly/hdKhCy</a> : Rcpp article in JSS<br>
<br>
<br>
______________________________<u></u>_________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">Rcpp-devel@lists.r-forge.r-<u></u>project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-<u></u>project.org/cgi-bin/mailman/<u></u>listinfo/rcpp-devel</a><br>
</div></div></blockquote></div><br>