InstanceOf

Lemonfiend lemon at fie.nd
Sun Jun 23 04:04:58 PDT 2013


I'm trying to create a fairly generic component system, where an 
object iterates over a bunch of other objects that all implement 
a certain interface.
And this all works fine, however, I would also like to be able to 
get objects of a specific type (a la instanceOf), and I can't 
figure out how to do it.

Could anyone help me out?

[code]
interface I
{
	void update();
	void write();
}

class A : I
{
	int n;
	
	void update()
	{
		n++;
	}

	void write()
	{
		writeln(n);
	}
}

class B : I
{
	int m;
	
	void update()
	{
		m--;
	}

	void write()
	{
		writeln(m);
	}
}

class C
{
	I[] array;

	void addElem(I elem)
	{
		array ~= elem;
	}

	void loop()
	{
		foreach(elem; array)
			elem.update();
	}

	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?
	}
}

void main()
{
	C c = new C();

	c.addElem(new A());
	c.addElem(new B());

	c.loop();

	c.writeAll();

	c.writeB(); // This is the problem
}
[/code]


More information about the Digitalmars-d-learn mailing list