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.thy...@ku-eichstaett.de]
> Gesendet: Montag, 22. November 2010 00:31
> An: 'r-de...@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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to