infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Mihai Tiganus din Noiembrie 30, 2008, 21:01:10



Titlul: pointer in struct!?!de ce nu merge?
Scris de: Mihai Tiganus din Noiembrie 30, 2008, 21:01:10
Urmatorul cod imi da un sir impresionant de erori:
Cod:
struct rAnd{ char *content=new char[202]; int lg,nrpag; }ln[202];
   ](*,) , sunt destul de foarte sigur ca este de la faptul ca am declarat in interiorul lui struct un pointer (char *), de ce nu merge?pot sa-l fac sa mearga?cum!?!(nu vreau sa declar pur si simplu char content[202]; ).Multumesc anticipat! :)


Titlul: Răspuns: pointer in struct!?!de ce nu merge?
Scris de: Andrei Grigorean din Noiembrie 30, 2008, 21:03:49
Nu ai voie sa initializezi o variabila in interiorul structului.


Titlul: Răspuns: pointer in struct!?!de ce nu merge?
Scris de: Mihai Tiganus din Noiembrie 30, 2008, 21:12:11
Multumesc mult!incerc pe o alta cale, am sperat si eu sa gasesc o cale sa declar pointerul ala, dar daca nu se poate nu se poate...  :)


Titlul: Răspuns: pointer in struct!?!de ce nu merge?
Scris de: Andrei Grigorean din Noiembrie 30, 2008, 21:18:43
Daca scrii in C++ poti sa faci asa:

Cod:
struct rAnd {
    char* content;
    int lg, nrpag;
    rAnd() {
        content = new char[202];
    }
} ln[202];


Titlul: Răspuns: pointer in struct!?!de ce nu merge?
Scris de: Mihai Tiganus din Decembrie 02, 2008, 08:38:10
da..merge si asa multumesc!..am mai gasit o metoda care era banala dar nu mi-a tercut prin minte..dupa ce am declarat pointer char * in struct, in afara am initializat pe rand pentru fiecare ln..., dar e mai simplu cum ai scris  :D


Titlul: Răspuns: pointer in struct!?!de ce nu merge?
Scris de: Iacob Eduard din Decembrie 02, 2008, 17:56:34
Mai corect ar fi asa:

Cod:
struct rAnd {
    char* content;
    int lg, nrpag;
    rAnd() {
        content = new char[202];
    }
    ~rAnd()
    {delete [] content;}
} ln[202];

rAnd e destrcutorul structurei rAnd.De asemenea trebuie sa stii ca atunci cand definesti functiile in interiorul unei structuri/clase ,ea este implicit inline.


Titlul: Răspuns: pointer in struct!?!de ce nu merge?
Scris de: Valentin Stanciu din Decembrie 04, 2008, 11:47:51
Are dreptate eddy, trebuie creeat si acel deconstructor care sa dezaloce memoria alocata cu new. Altfel programul o sa aibe memory leaks. Desigur, daca folosesti structura global nu conteaza acest lucru.

Ca fun fact: structurile in C++ sunt clase, cu diferenta ca un membru este default public, nu private.