[ Valerij Zajcev @ 03.04.2007. 11:24 ] @
Poceo sam konacno da ucim c++, zavrsio sam prvih 7 dana knjige i sad sam poceo ponovo malo detaljnije ali ne nalazim neke odgovore pa...
1) Imam dekilaraciju klase i definiciju klase treba da ih smestim u dve datoteke jedna je deklaracija (pirat.hpp), a druga je definicija (pirat.cpp) {linux naravno}. Kako da povezem ove dve datoteke, ja probam sa
gcc pirat.hpp pirat.cpp -o pirat ali uvek mi javi gresku oko povezivanja, imam osecaj da koristim pogresnu komandu, sta da radim sa ovim?
2) Sta je void, sta radi?
[ karas @ 03.04.2007. 16:03 ] @
1) g++ pirat.cpp -o pirat jer koristish C++ a zaglavlje se ne kompajlira.
2) void se koristi za deklarisanje funkcije koja ne vracca nishta.
[ Mali Misha @ 03.04.2007. 16:59 ] @
2) Void znači označava nešto čega nema. Kako karas reče npr. kod funkcije koja ne vraća ništa:

Code:
void saberi(int *prviSabirak, int *drugiSabirak, int *zbir)
{ *zbir = *prviSabirak + *drugiSabirak; }


Ako takvu f-ju treba igde da prekineš sa return, treba tamo da ostaviš, pa... ništa. Ovako:
Code:
void saberi(int *prviSabirak, int *drugiSabirak, int *zbir)
{
    // ne dopušta da ijedan od pokazivača bude NULL
    if(!(prviSabirak && drugiSabirak && zbir)) return;

    *zbir = *prviSabirak + *drugiSabirak;
}


Još jedna primena void je za tip pokazivača koji pokazuje na neodređen tip, void*. Sledeća f-ja ne radi ništa pametno. Samo demonstrira princip.
Code:
int main()
{
    int intArray[25];
    double doubleArray[25];    
    
    void * p;

    int *pIntArray;
    double *pDoubleArray;

    p = (void*)intArray;
    pIntArray = (int*)p;

    p = (void*)doubleArray;
    pDoubleArray = (double*)p;
    
    // vratiće warning jer se ni jedan od pokazivača ne koristi

    return 0;
}