Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Gde ja ovde grešim???

[es] :: C/C++ programiranje :: Gde ja ovde grešim???

[ Pregleda: 3742 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Kurt2
SCG

Član broj: 79835
Poruke: 153
..nis1-nis.customer.sbb.co.yu.

ICQ: 156109951


+9 Profil

icon Gde ja ovde grešim???04.01.2006. u 13:53 - pre 222 meseci
Imam klasu "Osnovna" sa nekim jednostavnim f-jama. U h fajlu mislim da nema problema. Grešku mi prijavljuje u glavnom programu. Nešto nisam uradio dobro. Šta?
Prikačeni fajlovi
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.dsl.pipex.com.



+4 Profil

icon Re: Gde ja ovde grešim???04.01.2006. u 14:23 - pre 222 meseci
1. Implementiraj destruktor
2. #include <iostream> u osnovna.h
3. osnovna.cpp fajl ti ne treba, templejt je u pitanju
4. U glavni.cpp : Osnovna<int,5> Pera; // bez zagrade

 
Odgovor na temu

Kurt2
SCG

Član broj: 79835
Poruke: 153
..nis1-nis.customer.sbb.co.yu.

ICQ: 156109951


+9 Profil

icon Re: Gde ja ovde grešim???04.01.2006. u 14:46 - pre 222 meseci
Za iostream sam totalno zaboravio, sa osnovna.cpp nema problema, može da postoji iako je prazan, destruktoru je samo falilo " { } " bez ikakvog koda unutra, za "Pera()" je glupo što bez zagrada radi, a sa zagradama neće, ali dobro...
Hvala!!!
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p3-47.BVCOM.NET.



+1064 Profil

icon Re: Gde ja ovde grešim???06.01.2006. u 09:12 - pre 222 meseci
Citat:
Kurt2: Za iostream sam totalno zaboravio, sa osnovna.cpp nema problema, može da postoji iako je prazan, destruktoru je samo falilo " { } " bez ikakvog koda unutra, za "Pera()" je glupo što bez zagrada radi, a sa zagradama neće, ali dobro...
Hvala!!!


Osnovna<int,5> Pera();
je deklaracija funkcije "Pera" koja nema argumenata i vraca Osnovna<int,5>

Pozdrav!
 
Odgovor na temu

Kurt2
SCG

Član broj: 79835
Poruke: 153
..nis1-nis.customer.sbb.co.yu.

ICQ: 156109951


+9 Profil

icon Re: Gde ja ovde grešim???06.01.2006. u 15:50 - pre 222 meseci
@Branimir: Hvala, to nisam znao!

Da ne otvaram novu temu, evo još jednog problema:
Imam klasu Student, njoj neke privatne atribute i dinamički niz sa ocenama. Kako to zapisati u binarni fajl? Ustvari, ja znam kako, ali se javlja problem sa destruktorom. U glavnom programu pravim jedan objekat (Pera, uzeo sam testa radi da dinamički niz ima 3 ocene), onda to zapišem u fajl, pa onda fajl iščitam ali ovaj put iz objekta Misa, pre čemu to sve lepo radi, ali na kraju destruktor ne završi posao sa "Misom" kako treba! Tu grešim sa pokazivačem na niz, ali ne znam baš kako.
I još nešto: da li je moguće da pri debagiranju u visual c-u isključim da mi stalno iskače disassembly prozor?
Prikačeni fajlovi
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p3-47.bvcom.net.



+1064 Profil

icon Re: Gde ja ovde grešim???06.01.2006. u 22:33 - pre 222 meseci
Citat:
Kurt2: @Branimir: Hvala, to nisam znao!

Da ne otvaram novu temu, evo još jednog problema:
Imam klasu Student, njoj neke privatne atribute i dinamički niz sa ocenama. Kako to zapisati u binarni fajl? Ustvari, ja znam kako, ali se javlja problem sa destruktorom. U glavnom programu pravim jedan objekat (Pera, uzeo sam testa radi da dinamički niz ima 3 ocene), onda to zapišem u fajl, pa onda fajl iščitam ali ovaj put iz objekta Misa, pre čemu to sve lepo radi, ali na kraju destruktor ne završi posao sa "Misom" kako treba! Tu grešim sa pokazivačem na niz, ali ne znam baš kako.
I još nešto: da li je moguće da pri debagiranju u visual c-u isključim da mi stalno iskače disassembly prozor?


Ne mozes binarno citati/pisati u jednom cugu pogotovo sto imas pointere
u klasi. Znaci u slucaju virtuelnog nasledjivanja ili virtuelne funkcije ili
kad imas pointer kao clan, binarno moras da serijalizujes element po element zato
sto u klasi postoje run time podaci koje nema smisla snimati ili ucitavati.

Pozdrav!

 
Odgovor na temu

Kurt2
SCG

Član broj: 79835
Poruke: 153
..nis1-nis.customer.sbb.co.yu.

ICQ: 156109951


+9 Profil

icon Re: Gde ja ovde grešim???06.01.2006. u 23:15 - pre 222 meseci
OK, jel ima ovo smisla:


Code:

void Student::upis()
{
    ofstream os("podaci.dat", ios::binary); //pisanje u "podaci.dat"
    os.write((char*) this, sizeof(Student)); //upisujem statiče podatke (ili ne?)
    for (int i=0; i<3; i++)
          os.write((char*) &ocene[i], sizeof(int)); //upisujem jedan po jedan integer iz dinamičkog niza
    os.close();
}
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.57.EUnet.yu.



+9 Profil

icon Re: Gde ja ovde grešim???07.01.2006. u 18:09 - pre 222 meseci
Pogledaj Student.h: Neko je to već napomenuo čini mi se... imaš int *ocene; šta misliš da se sa tim dešava? Sa tom funkcijom nećeš upisati ceo niz već samo vrednost tog pokazivača.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p3-47.bvcom.net.



+1064 Profil

icon Re: Gde ja ovde grešim???08.01.2006. u 11:24 - pre 222 meseci
Citat:
Kurt2: OK, jel ima ovo smisla:


Code:

void Student::upis()
{
ofstream os("podaci.dat", ios::binary); //pisanje u "podaci.dat"
os.write((char*) this, sizeof(Student)); //upisujem statiče podatke (ili ne?)
for (int i=0; i<3; i++)
      os.write((char*) &ocene[i], sizeof(int)); //upisujem jedan po jedan integer iz dinamičkog niza
os.close();
}


Ne mozes upisati ceo Student, moras redom 1 po jedno polje izuzev pokazivaca.
Kako pisanje, tako i citanje.

Pozdrav!
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.206.EUnet.yu.



+9 Profil

icon Re: Gde ja ovde grešim???08.01.2006. u 18:45 - pre 222 meseci
Ne mora sve podatke posebno... Ovo je validan kod i potpuno funkcionalan, zar ne?

Code:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

class Klasa
{
    public:
    int x;
    string s;
    char n;
};


int main(int argc, char *argv[])
{
    Klasa a;
    Klasa p;
    
    a.x = 5;
    a.s = "Goranche";
    a.n = 'N';
    
    fstream file("out",ios::out|ios::binary);
    file.write((char*)&a,sizeof(a));
    file.close();
    
    file.open("out",ios::in|ios::binary);
    file.read((char*)&p,sizeof(p));
    file.close();
    
    cout << p.x;
    cout << a.s;
    cout << a.n;
}


Što će reći, možeš upisivati ceo objekat odjednom, ali pazi! Ali ćeš vratiti nazad samo one podatke koji su bili na steku.

[Ovu poruku je menjao Goran Arandjelovic dana 08.01.2006. u 19:46 GMT+1]
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p3-47.BVCOM.NET.



+1064 Profil

icon Re: Gde ja ovde grešim???09.01.2006. u 01:44 - pre 222 meseci
Citat:
Goran Arandjelovic: Ne mora sve podatke posebno... Ovo je validan kod i potpuno funkcionalan, zar ne? :)

Code:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

class Klasa
{
    public:
int x;
string s;
char n;
};


int main(int argc, char *argv[])
{
    Klasa a;
    Klasa p;
    
    a.x = 5;
    a.s = "Goranche";
    a.n = 'N';
    
    fstream file("out",ios::out|ios::binary);
    file.write((char*)&a,sizeof(a));
    file.close();
    
    file.open("out",ios::in|ios::binary);
    file.read((char*)&p,sizeof(p));
    file.close();
    
    cout << p.x;
    cout << a.s;
    cout << a.n;
}


Što će reći, možeš upisivati ceo objekat odjednom, ali pazi! Ali ćeš vratiti nazad samo one podatke koji su bili na steku.

[Ovu poruku je menjao Goran Arandjelovic dana 08.01.2006. u 19:46 GMT+1]


Niti je validan niti funkcionalan.
dodaj recimo izmedju write/a i read/a a.s.resize(100); ili a.s+="Tamara";
ili bilo sta sto ce naterati string da realocira i tvoj program onda ima
undefined behavior. Sto se tice steka, isto ti je, string alocira uvek
na heapu, osim ako nije SSO recimo flex_string al i on alocira
na heapu preko 16 karaktera:)
Write cele strukture je garantovan da radi samo ako struktura
sadrzi POD-ove i nista drugo, sto ce reci, ako tvoj string ima pokazivac,
kao sto ima, to ne radi jer sadrzaj stringa nece biti snimljen
nego pointer.

Pozdrav!
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.60.eunet.yu.



+9 Profil

icon Re: Gde ja ovde grešim???09.01.2006. u 10:23 - pre 222 meseci
U pravu si. I malo pre sam sam rekao za pokazivače, a mahinalno sam stavio string...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Gde ja ovde grešim???

[ Pregleda: 3742 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.