Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > odev yardim serileri 2: templates are cool :P
Yazar
neurorebel


avatar

Kayıt: 15.08.2007
30.04.2008-00:17 #43720
#include <iostream>
#include <ctime>

using namespace std;
//
// Templateler elbetteki sadece tek bir parametreye sahip olmak zorunda degiller.
// Hatta typename disinda baska tiplerde parametrelerde alabilirler. Ornegin dizi genisligini
// 5 ile sinirlamak yerine int tipinde bir template parametresi ile belirleyerek sinifi daha da
// genellestirebiliriz. Hatta mean() fonksiyonumuzun donus degerini de ikinci bir typename parametresi
// ile belirleyebiliriz.
// Hadi yapalim :P
template <typename T1, typename T2, int SIZE>
class ReallyCoolWow
{
public:
	T1 numbers[SIZE];	// T1 dizinin tutatacagi verilerin tipini belirliyor
						// SIZE ise dizinin genisligini
	
	T2 mean() // T2 ortalama alan fonksiyonumuzun donus tipini belirliyor
	{
		float sum = 0;
		for (int i = 0;  i < SIZE; i++)
			sum+= numbers[i];
		return sum / SIZE;
	}
};
// Tam anlamiyla genel amacli bir "ortalama alim" sinifi diyebiliriz :)

// Kullanim
int main()
{
	ReallyCoolWow<float, double, 100> r; 
	// r.numbers dizisi 100 adet float saklar
	// r.mean() double bir deger dondurur

	srand(time(0));
	for (int i = 0; i < 100; i++)
		r.numbers[i] = (float)rand();

	cout << "Mean of 100 random numbers --> " << r.mean() << endl;
	
	return 0;
}






Do weird and difficult things.

Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb