|
![]() |
#1 |
Premium
Datum registracije: Feb 2004
Lokacija: Croatia
Postovi: 36
|
Class s poljem kako?
Vizija ide ovako: Zelio bi da objekt sadrzava dinamicko (new) dvodimezionalno polje koje ce jedna member function puniti. E sada je pitanje gdje da incijaliziram to polje u funkciji ili u constructoru kod koji pravi polje je sljedeci: char **polje; //dinamicka alokacija polja s pozivacem na pokazivac polje = new char*[sizeP]; for (int i = 0; i < sizeP; i++) { polje[i] = new char[stupaca + 1]; polje[i][0] = stupaca; for (int j = 1; j <= stupaca; j++) polje[i][j] = i + 1 + j / 100.; //ovo nemam pojma sta je ali tako je u knjizi } 2.pitanje kako bi trebao izgledati copy constructor ako uopca postoji potreba za njim 3.Jeli mogu samo stavit u destructor kod koji ce bristi to polje iz memorije for (int i = 0; i < sizeP; i++) delete [] polje[i]; delete [] polje; Hvala
__________________
mario |
![]() |
![]() |
![]() |
#2 |
Premium
Datum registracije: Feb 2004
Lokacija: Croatia
Postovi: 36
|
Dio problema sam uspio rijestiti ali se kako to obicno biva naisao novi! Trebalo bi sada da funkcija clanica (member) setArray to polje popuni to radi kada napravim objekt i to u main izvedem ali mi neradi kada zelim da ona sama prilikom kostrukcije objekta to napravi. Odnosno ne znam kako da prenesem polje(dvodimensionalno dinamicko) u funkciju i napunim ga. Da li bi se to moglo da nekako prenesem objekt u funkciju ili da napravim neku drugu klasu koja bi to mogla napraviti. Code:
// new3.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <string> using namespace std; class twodymArray {public: int Row; int Column; public: char **pArray; twodymArray(); // default constructor string primer; twodymArray(string Cprimer,int Cletters); //constructor twodymArray(twodymArray &); //copy constructor void setRow (){Row = primer.size();}; //inline member finction void setArray(int Row, int Column, string primer, char **pArray); }; twodymArray::twodymArray() { pArray = NULL; } twodymArray::twodymArray(string Cprimer,int Cletters) { primer = Cprimer; Column = Cletters; setRow(); void setArray(int Row, int Column, string primer, char **pArray); pArray = new char*[Row] ; for(int i=0; i<Row; ++i) { pArray[i] = new char[Column+1] ; pArray[i][Column-1] = NULL ; }cout<<"Column = "<<Column<<endl; } twodymArray::twodymArray(twodymArray &objtwodymArray) //copy constructor { pArray = new char*[Row]; for (int i = 0; i < Row; i++) { pArray[i] = new char[Column + 1]; pArray[i][0] = Column; for (int j = 1; j <= Column; j++) pArray[i][j] = i + 1 + j / 100.; } } void setArray(int Row, int Column,string primer,char **pArray) {string s2; for(int i=0; i<(Row-(Column-1)); i++) //formula (row-(letters-1)) je nuzna da ne izadje izvan { //polja a daje broj koliko ce se "usporedjica" napraviti for (int j=0; j<Column; j++) //for petlja je skraceni oblik pisanja [i+1] + [i+2] +.... {s2 = s2 + primer[i+j];} //jer tako unosom varijable letters mogu dobit potreban broj ponavljanja for (int l=0; l<Column; l++) //upisuje stringove s2 u "array". "l" petlju svaki puta vrti a "i" koristi... {pArray [i][l] = s2[l];} // ...od odozgor s2.erase(); //"s2.erase();"ovo je potrebno da se string svaki puta ocisti jer bez brisanja } //dolazi do nagomilavanja a ne da mi kida primer u male dijelove za usporedbu } int _tmain(int argc, _TCHAR* argv[]) { string S1, s2; S1=("nestjakomajosiima"); twodymArray theobj(S1,4); cout<<"Row = "<<theobj.Row<<" Column = "<<theobj.Column<<" Primer = "<<theobj.primer<<endl; //for(int i=0; i<(theobj.Row-(theobj.Column-1)); i++) //formula (row-(letters-1)) je nuzna da ne izadje izvan //{ //polja a daje broj koliko ce se "usporedjica" napraviti // for (int j=0; j<theobj.Column; j++) //for petlja je skraceni oblik pisanja [i+1] + [i+2] +.... // {s2 = s2 + theobj.primer[i+j];} //jer tako unosom varijable letters mogu dobit potreban broj ponavljanja // // for (int l=0; l<theobj.Column; l++) //upisuje stringove s2 u "array". "l" petlju svaki puta vrti a "i" koristi... // {theobj.pArray [i][l] = s2[l];} // ...od odozgor // // s2.erase(); //"s2.erase();"ovo je potrebno da se string svaki puta ocisti jer bez brisanja //} for (int m=0; m<(theobj.Row-(theobj.Column-1)); m++) // { for (int n=0; n<theobj.Column; n++) {cout<<theobj.pArray[m][n];} cout<<endl; } system("PAUSE"); return 0; } Vjerojatno pazljiviji mogu skuziti da nema destruktora, a njega nema jer kada ga stavim izbacuje mi gresku. Zasto???????: hitthewa
__________________
mario |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
|
|