OOP with Rcpp modules
The purpose of Rcpp modules has always been to make it easy to expose C++ functions and classes to R. Up to now, Rcpp modules did not have a way to declare inheritance between C++ classes. This is now fixed in the development version, and the next version of Rcpp will have a simple mechanism to declare inheritance.
Consider this simple example, we have a base class Shape with two virtual methods (area and contains) and two classes Circle and Rectangle) each deriving from Shape and representing a specific shape.
The classes might look like this:
And we can expose these classes to R using the following module declarative code:
It is worth noticing that:
- The area and contains methods are exposed as part of the base Shape class
- Classes Rectangle and Circle simply declare that they derive from Shape using the derives notation.
R code that uses these classes looks like this: