[ Neznalica_sa_ugla @ 30.08.2007. 11:57 ] @
Vec bijaše neko slicno pitanje , pa i odgovori ali to se ipak ne odnosi na ovo ::
Naime ovaj kod radi kada stavim char * i to je ok , ali ne radi sa string ???

Code:


#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class  cStudent
{
public:
    cStudent(void);
    cStudent(string , string , string  , double);
            void Ispisi(void);
             void Upisi(string  , string ,string  , double );  
    cStudent * sljedi;
private:
    string ime;
    string prezime;
    string id_st;
    double prosijek;
    
};
cStudent::cStudent(void)
{
    ime=" ";
    prezime=" ";
    id_st=" ";
    this->prosijek=0;
}

cStudent::cStudent( string s1, string s2 ,string s3 ,double d1)
{
             ime=s1;
    prezime=s2;
    id_st=s3;
    prosijek=d1;
}

void cStudent::Upisi(string s1, string s2 ,string s3 ,double d1)
{     
    ime=s1;                     //   Ovdije   program puca   
    prezime=s2;
    id_st=s3;
    prosijek=d1;
}

void cStudent::Ispisi(void)
{
    cout <<   this->ime << " " << this->prezime <<"  " << this->id_st << "  " << this->prosijek << endl ;
    
    
    
}

void main(void)
{
             string v_ime;
    string  v_pre;
    string v_broj;
    double v_pros;
    cStudent *pst=NULL ;
    cStudent *pPocetak=NULL;
    cStudent *ptemp=NULL;
    int f=0;
    while(f<3) 
    {
        
        f++;
        cout <<  "Unesi Ime Studennta :"  ;
        cin >> v_ime;
        cout <<  endl;
        
        cout <<  "Unesi Prezime Studennta :"  ;
        cin >> v_pre;
        cout <<  endl;
        
        cout <<  "Unesi Broj Studennta :"  ;
        cin >> v_broj;
        cout <<  endl;
        
        
        cout <<  "Unesi prosijek  Studennta :"  ;
        cin >> v_pros;
        cout <<  endl;
        
        
        ptemp=pst;
        
        pst=(cStudent*) malloc(sizeof(cStudent));   
        
        if(ptemp!=NULL)
        {
            ptemp->sljedi=pst; 
        }
        
        
        if (pPocetak==NULL)
        {
            pPocetak=pst;
        }
        
        
        pst->Upisi(v_ime,v_pre,v_broj,v_pros);
        pst->sljedi=NULL;
               }
    pst=pPocetak;

    do
    {
                         pst->Ispisi() ;
                    pst=pst->sljedi;
    
    }while(pst!=NULL);
    
}



Samo mi nemojte reci " Vrati char , pa ce ti raditi " , HVALA


[ NastyBoy @ 30.08.2007. 12:32 ] @
Mene samo interesuje chemu ovo sluzhi:

Code:
pst=(cStudent*) malloc(sizeof(cStudent));   


[ X Files @ 30.08.2007. 12:45 ] @
Citat:

Mene samo interesuje chemu ovo sluzhi:

To je prazan prostor ;) nigde na vidiku


P.S. / O.T.
Šta je ispravno (ijekavicom): "prosijek" ili "prosjek" ? Ja bih reko ovo drugo...
[ Neznalica_sa_ugla @ 30.08.2007. 14:02 ] @

""To je prazan prostor ;) nigde na vidiku"

naravno moglo je sa new ali eto ja sam stariji covijek , pmi nekako ostalo !!!

" Šta je ispravno (ijekavicom): "prosijek" ili "prosjek" ? Ja bih reko ovo drugo.. " .

Ja ocekivao nesto o programu , a mene on pita sta je ispravno ::
EVO NEZNAM!!
Ja sam studirao u Beogradu , pa zaboravio (ije) , sada mi lakše (e) ,a i to se ovdije cesto mijenja , da mi je zgodno da ti spremim jednu knjigu iz mreža od Julina Ozegovica , da vidis sto je pravopis , "grijeske u prenosu pogrijesni bitova , mogu biti posebno grijeske , koje se ..... " ,
Uostalom mislio sam da c++ nije alergican na (ije) ili (e ) ...

[ nikoladsp @ 31.08.2007. 07:24 ] @
lepo ti ljudi rekose....

stavi
Code:
pst=new cStudent();

umesto
Code:
pst=(cStudent*) malloc(sizeof(cStudent));


tako da ti se kulturno pozove konstruktor , jer bez njega neces daleko stici .

[Ovu poruku je menjao nikoladsp dana 31.08.2007. u 08:41 GMT+1]
[ Neznalica_sa_ugla @ 01.09.2007. 00:12 ] @
Skidam kapu , radi sa new , ali zasto onda radi sa char i malloc , ako nije bio pozvan konstruktor ???
[ kiklop74 @ 01.09.2007. 03:40 ] @
Citat:
Neznalica_sa_ugla: Skidam kapu , radi sa new , ali zasto onda radi sa char i malloc , ako nije bio pozvan konstruktor ???


Kad budes shvatio zasto shvatices i razliku izmedju c++ i c-a.

Na primer pocni odavde:

http://wiki.answers.com/Q/What...lloc_and_new_other_than_syntax
http://www.codeguru.com/forum/showthread.php?t=401848
http://www.cplusplus.com/doc/tutorial/dynamic.html

[ perun_ @ 14.10.2007. 01:04 ] @
Moglo bi u nekom slucaju i sa malloc, ali se tu u C++ ne praktikuje. Ako bas hoces sa tim onda bi moralo stajati :
Code:

#include <stdlib.h>


Bar mi se cini da je tu, ali nisam siguran, davno bese...
[ Goran Arandjelovic @ 15.10.2007. 10:57 ] @
new operator u C++-u je implementiran zapravo preko malloc-a, s tim što se usput poziva i konstruktor određene klase... Ako koristiš samo malloc, dobićeš određeno parče memorije koje nije inicijalizovano... Mogao si i da uradiš sledeće:


Code:


#include <iostream>
using namespace std;

class A
{
  public:
    A() {x = 13; y = 5;}
    int x, y;
};


int main()
{
  A *a = (A*)malloc(sizeof(A));
  a->x = 13;
  a->y = 5;

  // ovo je ekvivalentno inicijalizovanju objekta operatorom new (odnosno, instanciranju):

  // A *a = new A; Ili, da su x i y bili private, onda je bilo moguće isto uraditi sa bilo kojom javnom metodom klase.

  E sada, ovo je standardni operator new koji kao i svaki drugi može da se overloaduje globalno ili za svaku klasu posebno u zavisnosti od potreba.



Pozdrav! :)
[ Nedeljko @ 15.10.2007. 12:11 ] @
A šta ako mu se klasa cStudent zakomplikuje, pa bude imao virtuelne metode? Kako će onda da inicijalizuje prostor rezervisan sa malloc?
[ 1jedini @ 16.10.2007. 11:47 ] @
Primer preuzet iz 3.7.3.1.13

Code:

void* operator new(size_t, void* p) { return p; }
struct X {
// ...
X(int);
˜X();
};
void f(X* p);
void g() // rare, specialized use:
{
char* buf = new char[sizeof(X)];
X* p = new(buf) X(222); 
f(p);
p->X::˜X(); //cleanup
}


Pogledati jos 5.3.4, 18.4 i 12.5.

i http://www.elitesecurity.org/t150132-Placement-new

[Ovu poruku je menjao 1jedini dana 16.10.2007. u 13:17 GMT+1]