> Child1[T: FloatingPoint] = ref Parent1
It means that Child1 is just a reference to Parent1, so no additional fields
allowed after such a declaration. I assume you intended to write something like
this
type
floatingPoint = float | float64 | float32
Parent1Obj = object of RootObj # Parent object should be non-final
Parent1 = ref Parent1Obj
Parent2 = ref Parent1
Parent3 = ref Parent1
Child1[T: floatingPoint] = ref object of Parent1Obj # Child1 is a
reference to object inherited from Parent1Obj
nOutNodes: uint
outputNodes: seq[seq[T]]