Implicit conversion from class in parent class fails?

Namespace rswhite4 at googlemail.com
Sat Jun 16 11:52:33 PDT 2012


Why work this:

[code]
class Foo { }
class Bar : Foo { }
class Quatz : Bar { }

void foo(Foo f) {

}

void main() {
	Foo f = new Foo();
	Foo f2;
	
	foo(f);
	foo(f2);
	
	Bar b = new Bar();
	Bar b2;
	
	foo(b);
	foo(b2);
	
	Quatz q = new Quatz();
	Quatz q2;
	
	foo(q);
	foo(q2);
}
[/code]

but not:

[code]
import std.stdio;

class Foo { }
class Bar : Foo { }
class Quatz : Bar { }

void bar(Foo[] fs) {

}

void main() {
	Foo[] fs = [new Foo()];
	Foo[] fs2;
	
	bar(fs);
	bar(fs2);
	
	Bar[] bs = [new Bar()];
	Bar[] bs2;
	
	bar(bs);
	bar(bs2);
	
	Quatz[] qs = [new Quatz()];
	Quatz[] qs2;
	
	bar(qs);
	bar(qs2);
}
[/code]

I think that should work also.


More information about the Digitalmars-d-learn mailing list