Kurs C++
Szablony struktur
[lekcja] Co to są szablony struktur i jak z nich korzystać.W tej lekcji omawiane będą szablony struktur.
Szablony struktur są rzadko stosowane, jednak polecam to poczytać...
Zaczynamy
Napiszę kod, później będę objaśniać.
#include <iostream>
using namespace std;
template < int ilosc, class typ >
struct tablica
{
typ calatablica[ ilosc ];
};
int main()
{
tablica < 4, int > liczby;
cin >> liczby.calatablica[ 2 ];
cout << liczby.calatablica[ 2 ] << endl;
getchar();
}
Mam nadzieję, że rozumiesz na czym to polega??
Po prostu tworzymy szablon, później strukturę, później tworzymy nową zmienną klasy "tablica". A później już można napisać coś złożonego!!
Dodatek - funkcje w strukturach
Niby niczym się nie różni od funkcji w klasach, ale tak przy okazji:
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
using namespace std;
template < int plecosoby >
struct osoba
{
int plec;
int dzien;
int rok;
int miesiac;
int maksymalny_wiek;
int aktualny_wiek;
int wariant_losowania_maksymalnego_wieku;
string imie;
string nazwisko;
osoba * nadaj_plec()
{
if( plecosoby == 0 )
{
cout << "Dziecko jest mezczyzna!" << endl;
}
else if( plecosoby == 1 )
{
cout << "Dziecko jest kobieta!" << endl;
}
else cout << "Dziecko jest z rodzaju nijakiego! xD" << endl;
plec = plecosoby;
}
osoba * nadaj_dane( int zdzien, int zmiesiac, int zrok, string zimie, string znazwisko )
{
dzien = zdzien;
rok = zrok;
miesiac = zmiesiac;
imie = zimie;
nazwisko = znazwisko;
aktualny_wiek = 0;
cout << nazwisko << " " << imie << " urodzil sie " << rok << " " << miesiac << " " << dzien << "." << endl;
wariant_losowania_maksymalnego_wieku = rand() % 3;
if( wariant_losowania_maksymalnego_wieku == 0 ) maksymalny_wiek = rand() % 105;
else if( wariant_losowania_maksymalnego_wieku == 1 ) maksymalny_wiek = rand() % 65 + 30;
else if( wariant_losowania_maksymalnego_wieku == 2 ) maksymalny_wiek = rand() % 51 + 15;
}
osoba * sprawdz_plec()
{
if( plec == 0 )
{
cout << "Ten czlowiek jest mezczyzna!" << endl;
}
else if( plec == 1 )
{
cout << "Ten czlowiek jest kobieta!" << endl;
}
else cout << "Ten czlowiek jest z rodzaju nijakiego! xD" << endl;
}
osoba * sprawdz_dane()
{
cout << nazwisko << " " << imie << " urodzil sie " << rok << " " << miesiac << " " << dzien << "." << endl;
}
osoba * sprawdz_wiek()
{
cout << nazwisko << " ma " << aktualny_wiek << " lat/rok." << endl;
}
};
int main()
{
int rok_w_polsce;
int wybor = 0;
int wyjdz = 0;
srand( time( NULL ) );
osoba < 0 > mieszkaniec_polski;
mieszkaniec_polski.nadaj_dane( 15, 5, 1980, "Jan", "Kowalski" );
mieszkaniec_polski.nadaj_plec();
rok_w_polsce = mieszkaniec_polski.rok;
if( mieszkaniec_polski.maksymalny_wiek != 0 )
{
cout << "Jest " << rok_w_polsce << " rok." << endl << endl;
cout << "Zbliza się kolejny..." << endl;
}
while( mieszkaniec_polski.aktualny_wiek < mieszkaniec_polski.maksymalny_wiek && wyjdz == 0 )
{
rok_w_polsce++;
mieszkaniec_polski.aktualny_wiek++;
cout << mieszkaniec_polski.imie << " obchodzi dzis swe " << mieszkaniec_polski.aktualny_wiek << " urodziny!" << endl;
cout << "Jest " << mieszkaniec_polski.dzien << " " << mieszkaniec_polski.miesiac << " " << rok_w_polsce << "." << endl;
cout << "Co chcesz zrobic dalej?" << endl << "[0]Zobacz dane [1]Zobacz aktualny rok [2]Zobacz plec [3]Zobacz aktualny wiek [4]Nic [5]Koniec" << endl;
cin >> wybor;
switch( wybor )
{
case 0:
mieszkaniec_polski.sprawdz_dane();
break;
case 1:
cout << "Jest " << rok_w_polsce << "." << endl;
break;
case 2:
mieszkaniec_polski.sprawdz_plec();
break;
case 3:
mieszkaniec_polski.sprawdz_wiek();
break;
case 4:
break;
case 5:
wyjdz = 1;
break;
case 6:
cout << "Cheater: " << mieszkaniec_polski.maksymalny_wiek << "." << endl;
break;
default:
break;
}
cout << endl;
if( wyjdz != 1 )
{
if( mieszkaniec_polski.aktualny_wiek == mieszkaniec_polski.maksymalny_wiek ) cout << "Zbliza się kolejny rok... Niestety ty go nie dozyles..." << endl << endl;
else cout << "Zbliza się kolejny rok..." << endl << endl;
}
}
if( mieszkaniec_polski.maksymalny_wiek == 0 ) cout << "Niestety, ty go nie dozyles..." << endl << endl;
if( wyjdz == 1 && mieszkaniec_polski.aktualny_wiek != mieszkaniec_polski.maksymalny_wiek ) cout << "Wyszles z programu. Dziekuje za przeczytanie kursu i kompilacje programu!" << endl;
else cout << "Umarles, miales: " << mieszkaniec_polski.aktualny_wiek << " lat. Dziekuje za przeczytanie kursu i kompilacje programu!" << endl;
return 0;
}
Jak widać, opisałem tu szablony i funkcje w strukturach.
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.