// Delegaten.cpp: Hauptprojektdatei.

#include "stdafx.h"
#include "Auto.h";
#include "Sportwagen.h";

using namespace System;

public delegate void AutoDelegate();  // Definition des Delegattyps

int main(array<System::String ^> ^args)
{	
	Auto^ vw = gcnew Auto(180, 100);
	Sportwagen^ ferrari = gcnew Sportwagen(350, 200);
	int auswahl;
	Console::WriteLine("Welchen Wagen fahren Sie?\n(1) für Pkw, (2) für Sportwagen");
	auswahl = Convert::ToInt32(Console::ReadLine());

	AutoDelegate^ del;

	Console::WriteLine("Der VW fährt " + vw->geschw + " km/h");
	Console::WriteLine("Der Ferrari fährt " + ferrari->geschw + " km/h");
	if(auswahl == 1)
		del = gcnew AutoDelegate(vw, &Auto::beschleunigen);
	if(auswahl == 2)
		del = gcnew AutoDelegate(ferrari, &Sportwagen::beschleunigen);	

	del->Invoke();

	Console::WriteLine("\nNach Ausführung des Delegaten:");
	Console::WriteLine("Der VW fährt " + vw->geschw + " km/h");
	Console::WriteLine("Der Ferrari fährt " + ferrari->geschw + " km/h");

	Console::ReadLine();
	return 0;
}
