[Rcpp-devel] Rcpp modules: Derived class - exposing method from base class?

Jonas Rauch jonas.rauch at googlemail.com
Wed Jun 15 07:16:18 CEST 2011


Actually, having just the declaration like this compiled fine but and ended
up in an unresolved symbol when loading the library.

class Bar : public Foo {
    ...
    void doSomething();

    void Action() {
        [some code here]
    }
};



I actually had to implement doSomething and explicitly call the Method of
the Base class:

class Bar : public Foo {
    ...
    void doSomething() { Foo::doSomething() }

    void Action() {
        [some code here]
    }
};


Since I do not know the internals of Rcpp modules: how hard would it be to
include support for derived classes?

Best regards,
Jonas

On Tue, Jun 14, 2011 at 7:36 PM, Dirk Eddelbuettel <edd at debian.org> wrote:

>
> Hi Jonas,
>
> On 14 June 2011 at 19:06, Jonas Rauch wrote:
> | I am trying to write an R interface to a library that uses derived
> classes in
> | the following manner:
> |
> | class Foo {
> |     ...
> |     virtual void Action() = 0;
> |     void doSomething() {
> |         Action();
> |         [do complicated stuff]
> |     }
> |     ...
> | };
> |
> | class Bar : public Foo {
> |     ...
> |     void Action() {
> |         [some code here]
> |     }
> | };
> |
> | class Baz : public Foo {
> |     ...
> |     void Action() {
> |         [some other code here]
> |     }
> | };
> |
> | etc.
> |
> | Where the abstract class Foo defines an interface and at the same time
> provides
> | base functionality that can then be applied to different implementations
> of
> | "Action".
> |
> | Is it possible to expose Bar::doSomething() to R using Rcpp modules? I
> have
> | tried different things and did not get it to work.
>
> Nice C++ design.  And it should work, but I think your only choice really
> is
> list all exposed functions, ie your need an explicit mention of
> Bar::doSomething as well as Baz::doSomething.  That way Rcpp Modules
> doesn't
> even know these are derived class.  It just seens two identifiers to hook
> up
> against.  As always, I may be missing parts of the picture in which case
> Romain may come forward and correct the record....
>
> |
> | I would appreciate any help.
> |
> | Best regards,
> | Jonas Rauch
> |
> | ----------------------------------------------------------------------
> | _______________________________________________
> | Rcpp-devel mailing list
> | Rcpp-devel at lists.r-forge.r-project.org
> | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
> --
> Gauss once played himself in a zero-sum game and won $50.
>                      -- #11 at http://www.gaussfacts.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20110615/407deb36/attachment.htm>


More information about the Rcpp-devel mailing list