[Rd] reference classes: question on inheritance

Janko Thyson janko.thyson at ku-eichstaett.de
Mon Nov 22 00:40:52 CET 2010


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



More information about the R-devel mailing list