Szablony funkcji CPP


(Druii) #1

Witam

Ostatnio przerabialiśmy szablony funkcji, niestety nie było mnie na zajęciach, a ten materiał będzie obowiązkowy. Zwracam się z prośbą o wytłumaczenie jak to działa. Czytałem na necie o tym, ale jakoś nie mogę zrobić przykładu z lekcji :confused:

Przykład wygląda tak:

class my_data

{

	double cr[2];

	public:

			my_data(){memset(cr,0,2*sizeof(double));

			}

			void set(double x, double y){cr[0]=x;cr[1]=y;

			}		

};


int main()

{

	double x,y;

	//my_data tmp; to sam dopisalem

	my_data *ptr = NULL;

	size_t it, ndim = 10;

	try

	{

	ptr = new my_data[ndim];	

	}

	catch(bad_alloc xx)

	{

	cout << "Zla alokacja \n";

	system("pause");

	exit(1);	

	}

	for(it = 0;it < ndim; it++)

	{

	x= static_cast(it+1);

	y= static_cast(it+10);

	ptr[it] = tmp;

	tmp.set(x,y);


	}


	my_print(ptr, ndim);

	delete [] ptr; ptr = NULL;

	system("pasue");

	return 0;


	}

a funkcja ktora dopisalem tak:

template T my_print(T a, T b)

{

	cout << a[b].cr[0];

	cout << a[b].cr[1];

	cout << a[b].cr[2];

};

Funkcja ma wyprowadzić elementy tablicy na monitor.

Jeśli ma ktoś jakieś wskazówki, ewentualnie potrafi to rozwiązać z wytłumaczeniem, byłbym bardzo wdzięczny :slight_smile:

Z góry dziękuje


([alex]) #2

Całość wygląda absolutnie bez sensu. Zwłaszcza funkcja którą dopisałeś.


(Druii) #3

Co do całości… podważasz autorytet profesora Politechniki, wiec wątpię by był to zły kod.

Co do mojej funkcji, może masz racje.

Co do wypowiedzi, prosiłem o wskazówki a nie głupie docinki…

Jeśli już masz takie coś pisać, to chociaż napisz dlaczego, przynajmniej coś się dowiem…


(Frankfurterium) #4

Postudiujesz jeszcze parę lat i zobaczymy, ile poważania ci dla takich zostanie :wink:


(Druii) #5

Tu nie chodzi o poważanie, bo jak dla mnie jego wykłady, ćwiczenia są beznadziejne, źle, w niezrozumiały sposób tłumaczone (nawet dla osób dobrze sobie radzących z cpp), jednakże takiego tytułu: dr hab inz Prof. PK nie dostanie każdy człowiek. Z resztą nie pisałem tutaj żeby się wykłucać tylko dokształcić. A wypowiedzi typu

wole żeby każdy zachował dla siebie, jeśli nie jest w stanie pomóc :confused:


(Wojtekbogocki) #6

Ale… nie jestem pewien gdzie są ci tu potrzebne szablony? Nie możesz po prostu:

void my_print(my_data* data_ptr, size_t count)

{

     for(size_t i = 0; i < count; ++i)

          cout << data_ptr->cr[0] << ' ' << data_ptr->cr[1] << endl;

}

?


(Rolek0) #7

:arrow: 1, 2, 3, a najlepiej całe http://www.intercon.pl/~sektor/cbx/ :wink:

Polecam jeszcze http://gynvael.coldwind.pl/?id=238 oraz http://xion.org.pl/productions/texts/coding/megatutorial/.

Miłej zabawy :smiley:


([alex]) #8

A wg mnie masz na to zwrócić uwagę. Bo skoro nie rozumiesz jak się indeksuje tablicy to nie jesteś jeszcze gotów na zrozumienie wzorców. Każdy inny komentarz na temat tego kodu jest bez sensu bo i tak nie zrozumiesz.