On Sunday, 23 June 2013 at 11:04:59 UTC, Lemonfiend wrote:
...
        void writeAll()
        {
                foreach(elem; array)
                        elem.write();
        }

        void writeB()
        {
                // Only call .write on B's
                // How do I get the B's from the array of I's?
        }

http://dlang.org/expression.html#CastExpression

So, this should do it:

void writeB()
{
        foreach(elem; array)
                if(cast(B) elem)
                        elem.write();
}

You can also do some things like this, if you want to use something specific to Bs:

if(auto b = cast(B) elem)
        b.bSpecificMethod();

Reply via email to