Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: 'DeBugger'
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ć.
C/C++
#include <iostream> //include
using namespace std; //namespace
template < int ilosc, class typ >
struct tablica
{
    typ calatablica[ ilosc ];
}; //nasza tablica
int main()
{
    tablica < 4, int > liczby; //możemy szybko stworzyć tablicę o dowolnym typie
    cin >> liczby.calatablica[ 2 ]; //podajemy wartość jednego z elementów
    cout << liczby.calatablica[ 2 ] << endl; //wypisujemy ją na ekranie
    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:
C/C++
#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; //losujemy, lepiej opisana ta czynność jest http://www.cplusplus.com/reference/clibrary/cstdlib/
        else if( wariant_losowania_maksymalnego_wieku == 2 ) maksymalny_wiek = rand() % 51 + 15; //tu też
       
    }
    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;
    }
}; //strukturka
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;
} //main
Jak widać, opisałem tu szablony i funkcje w strukturach.
Poprzedni dokument Następny dokument
Szablony funkcji Szablony klas