Hmm, interesting: it's the virtual class that causes the trouble. If a
virtual class is a ref class, everything works fine. If it's a standard S4
class, it results in the error below.
Regards,
Janko
> -----Urspr?ngliche Nachricht-----
> Von: Janko Thyson [mailto:janko.thyson at ku-eichstaett.de]
> Gesendet: Montag, 22. November 2010 00:31
> An: 'r-devel at r-project. org'
> Betreff: reference classes: question on inheritance
>
> Dear list,
>
> I have a reference class which should act as a ?generic? superclass for
> other classes. I?ve read the respective section at ?setRefClass and put
> the name of the superclass to the ?contains? argument of an example
> subclass (see class defs below). Classnames are set in a way that
> shouldn?t result in collation issues (virtual def sourced before
> superclass def sourced before subclass). Yet, this results in the
> following error:
>
> Warnmeldung:
> unable to find a consistent ordering of superclasses for class
> "Shabubu": order chosen is inconsistent with the superclasses of
> "JObject"
>
> ###### CLASS DEFS #####
> setClass("JObjectVirtual")
> setRefClass(
> Class="JObject",
> fields=list(
> # GENERIC FIELDS (DON'T CHANGE !!!)
> .BUFFER="environment",
> .GENESIS="environment",
> .HISTORY="environment",
> .IMAGES="environment",
> .LOGS="environment",
> .OPTS="environment",
> .PLUGINS="environment",
> .TMP="environment",
> .UID="character",
> DATA="data.frame"
> # /
> ),
> contains=c("JObjectVirtual"),
> methods=list(
> ...
> )
> )
> setRefClass(
> Class="Shabubu",
> fields=list(
> # CUSTOM FIELDS (ADAPT TO YOUR NEEDS)
> a="numeric",
> b="character",
> c="logical",
> d="data.frame",
> e="matrix",
> f="list",
> derived.field="function"
> # /
> ),
> contains=c("JObject")
> )
>
> What am I doing wrong here?
>
> Thanks,
> Janko