I have this object hierarchy with some fields :
    
    
    TMedia* = ref object of RootRef
    TVideo* = ref object of TMedia
    TImage* = ref object of TMedia
    TWebPage* = ref object of TMedia
    
    proc setNewDims(arr:seq[TMedia])=
       discard
    
    
    Run

if i pass a seq[TVideo] to setNewDims, the compiler complains that it must be a 
seq[TMedia]. But since TVideo is also a TMedia isn't seq[TVideo] also a 
seq[TMedia]? Then why it doesn't work? Is it because under the hood seq are 
pointers and to go from one TMedia obj to the next the compiler must know the 
size of the object? So at runtime, if i pass a seq[TVideo] the compiler, 
thinking it's a TMedia, would add the size of a TMedia to go to the next item 
and doing so would screw things up. Right? Is there a way to solve this 
problem? Sometimes you need to have as argument to a proc a seq of the base 
type and not just an object of that type

Reply via email to