error message says: (line numbers are not the same as in your code)
/usercode/in.nim(21, 8) Warning: use {.base.} for base methods; baseless
methods are deprecated [UseBase]
/usercode/in.nim(24, 8) Warning: use {.base.} for base methods; baseless
methods are deprecated [UseBase]
/usercode/in.nim(27, 13) Error: type mismatch
Expression: showContents(manager.myFoo)
[1] manager.myFoo: Foo
Expected one of (first mismatch at [position]):
[1] method showContents(b: Bar1)
[1] method showContents(b: Bar2)
Run
So following it I added a base method
type
Foo = ref object of RootObj
x: string = "I'm Foo"
Bar1 = ref object of Foo
y: string = "I'm Bar1"
Bar2 = ref object of Foo
z: string = "I'm Bar2"
FooManager = ref object
myFoo: Foo
var manager: FooManager = FooManager(
myFoo: Bar1()
)
method showContents(b: Foo) =
echo b.x
method showContents(b: Bar1) =
echo b.y
method showContents(b: Bar2) =
echo b.z
showContents(manager.myFoo)
Run
works
I'm Bar1
Run