On 2013-07-11, 21:05, Namespace wrote:

It seems to me that MyClass has access to MyStaticClass, and thus should
also have access to B. If this is the case, why is MyClass using an A
instead of a B?

No, they are sadly not part of the same file / module.
The // ---- should symbolize that. :D

Indeed, yet in MyClass.test1, you do reference MyStaticClass, which is
indicated to be in the same file as B. But no matter.


Would it be safe if I store A into an uint and cast this to B? Or is that the explicit variant what the compiler do implicit, if I use B b = cast(B) this.a; ?

  uint tmp = A.Foo;
  B result = cast(B)tmp;

gives the exact same result (and hopefully same asm) as casting directly
from A to B.

That also means that this compiles and gives (un?)expected results:

  uint tmp = 17;
  A a = cast(A)tmp;
  B b = cast(B)a;
  assert(b != B.Foo);
  assert(b != B.Bar);

--
Simen

Reply via email to