// Voorbeeld van gebruik van ABC, vector en polymorphism

#include <iostream>
#include <vector>
using namespace std;

class Fruit {
public:
	virtual void printSoort() const =0;
// ...
};

class Appel: public Fruit {
public:
	virtual void printSoort() const {
		cout<<"Appel."<<endl;
	}
// ...
};

class Peer: public Fruit {
public:
	virtual void printSoort() const {
		cout<<"Peer."<<endl;
	}
// ...
};

class FruitMand {
public:
	void voegToe(Fruit& p) {
		fp.push_back(&p);
	}
	void printInhoud() const {
		cout<<"De fruitmand bevat:"<<endl;
		for (vector<Fruit*>::size_type i(0); i<fp.size(); ++i)
			fp[i]->printSoort();
	}
private:
	vector<Fruit*> fp;
};

int main() {
	FruitMand m;
	Appel a1, a2;
	Peer p1;
	m.voegToe(a1);
	m.voegToe(p1);
	m.voegToe(a2);
	m.printInhoud();

	cin.get();
	return 0;
}

/* Uitvoer (in DOS window):
De fruitmand bevat:
Appel.
Peer.
Appel.
*/
