Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
c++ destruktor v konstruktore

Registrovaný: 01.02.08
Prihlásený: 10.04.15
Príspevky: 31
Témy: 11
Príspevok NapísalOffline : 14.05.2011 17:04

Zdravim potreboval by som spravit nieco nasledovne:
Kód:
trieda::trieda(char *filename)
{
    FILE *file=NULL;
    vfile=fopen(filename,"r");
    if (!vfile)
    {

        delete this;
        // this=NULL <--- toto nefunguje
        return;
    }
    ...
   
    fclose(vfile);
}

Proste ak nastane nejaka chyba tireda sa nema vytvorit a ukazovatel na triedu sa nastavi na NULL. Da sa to zariadit priamo v konstruktore alebo to musim riesit mimo?


Offline

Užívateľ
Užívateľ
c++ destruktor v konstruktore

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22
Bydlisko: Zilinska Un...
Príspevok NapísalOffline : 14.05.2011 21:38

Ja si myslim, ze toto je zle riesenie.
Nemam cas to skusat, ale toto "delete this;" by malo fungovat v poho, uz som to robil, ale ako to robis ty to je nebezpecne. Moznos v konstruktore vymazat pamat, beriem ako zle riesenie. Pretoze, ty budes v dalsom kode sa snazit tu pamat pouzivat, nahodou ti v konstruktore hodi delete a ti spadne cely soft pri pokuse citat z pamate. Vedel by som to spravit, ale je to moc komplikovane, potreboval by si nezavislu triedu, ktora ti kontroluje validitu pointrov. Myslim, ze toto nemusis vobec riesit o co sa snazis alebo to sprav z vonku. Delete sa ma pouzit vtedy, ked uz nachces resp. nepotrebujes robit s datami.

Ak chces kompletny system pre taku inteligentu spravu pamate, tak pouzi toto:
http://www.boost.org/doc/libs/1_46_1/li ... rt_ptr.htm
tiez to pouzivam, nemusis pouzivat delete, ked nastane problem, pamat sa sama vymaze a ty si cez objekt dokazes overit ci sa to uz stalo, teda ci je pointer validny.







_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Skúsený užívateľ
Skúsený užívateľ
c++ destruktor v konstruktore

Registrovaný: 11.01.09
Prihlásený: 29.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 14.05.2011 23:12

Myslim, ze na taketo pripady nam C++ ponuka exceptions:
Kód:
trieda* tr;

try
{
    tr = new trieda( "abcdef" );
}

catch( MyException )
{
    cout << "- exception raised..." << endl;
    delete tr;
}


Miesto toho 'delete this' das throw MyException.


Offline

Užívateľ
Užívateľ
c++ destruktor v konstruktore

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22
Bydlisko: Zilinska Un...
Príspevok NapísalOffline : 15.05.2011 8:52

Ano to je dalsia moznost, ale ja som mu chcel dat moznost, aby sa mu normalne odstranila pamat a program bezal v poho dalej. Uz je na nom ako si to zariadi, ale urcine nie tak ako pisal on :).







_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
c++ destruktor v konstruktore

Registrovaný: 01.02.08
Prihlásený: 10.04.15
Príspevky: 31
Témy: 11
Príspevok Napísal autor témyOffline : 15.05.2011 9:21

Diky za odpovede uz som to vyriesil podmienkou pred vytvaranim triedy.

Kód:
    FILE *readf=NULL;
   
    readf=fopen(cesta,"r");
    if (readf)
    {
        tr = new trieda(readf);
        fclose(readf);
        readf=NULL;
    }


Offline

Užívateľ
Užívateľ
c++ destruktor v konstruktore

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22
Bydlisko: Zilinska Un...
Príspevok NapísalOffline : 15.05.2011 9:43

Zrovna toto sme nemysleli, chcel si nieco ine, ale ked ti to vyhovuje, tak v poho. Si myslim, ze to je zas hlupost, co si napisal. Ty posielas tej triede pointer na subor a nasledne ho uzatvoris fclose, myslis, ze to je fajn? Funguje ti to tak ako ma? :). V tonto pripade mozes ten subor pouzit iba v konstruktore, lebo ho potom uzavries, k datam sa nedostanes cez metody. Tu funkcionalitu toho suboru, by som presunul do triedy.







_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
c++ destruktor v konstruktore

Registrovaný: 01.02.08
Prihlásený: 10.04.15
Príspevky: 31
Témy: 11
Príspevok Napísal autor témyOffline : 15.05.2011 16:51

Funguje to velmi dobre mne staci z toho suboru nacitat udaje, dalej ho nepotrebujem.


Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

724

08.07.2014 20:40

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. K: PC Literaturu- C++/C#/java/python/ruby/RoR

v Kúpim

0

405

13.05.2014 18:16

expresado Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladam hracov na C&C Generals Zero Hour

v Počítačové hry

10

1243

07.03.2007 19:22

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rozdiel medzi Borland 3.1 C++ vs Net. C++

v Assembler, C, C++, Pascal, Java

4

570

20.07.2010 12:54

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hledá se programátor C/C++ pro vesmírné projekty (Praha)

v Ponuka práce

0

1117

10.05.2016 14:59

evolvsys Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Naučte se C++ za 21 dní + C++Builder 6

v Assembler, C, C++, Pascal, Java

18

2406

21.05.2010 21:08

Wpegb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. aky je rozdiel medzi C++ a Visual C++ ?

v Assembler, C, C++, Pascal, Java

8

1952

19.02.2011 22:46

vendo2 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Čo mi treba na programovanie v C/C++

v Assembler, C, C++, Pascal, Java

17

1141

25.09.2011 18:14

reDo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladame 3x C/C++ Linux developer- projekt 11/2016-2/2017

v Ponuka práce

1

545

24.10.2016 15:28

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Darujem knihy o programovaní (HTML, Java, Visual C++, C++ Builder, Android)

v Vymením a darujem

0

421

01.04.2019 11:20

tomasteicher Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C&C Generals : Zero Hour - turnaj

v Počítačové hry

0

767

25.02.2009 20:18

k0t0l Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# alebo C++ appka/program na výpočty

v Assembler, C, C++, Pascal, Java

1

369

20.03.2015 22:36

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako nastavit grafikuv AMD catalyst c.c.

v ATI/AMD grafické karty

17

1476

26.12.2013 11:38

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - Ako prekompilovať .c súbor do .exe?

v Assembler, C, C++, Pascal, Java

7

551

02.11.2012 18:47

MasterMatoSK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. program na projekt (C#, C++, pascal, java)

v Assembler, C, C++, Pascal, Java

2

824

12.03.2009 12:08

Svjatogor Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C/C++ problém so súbormi a hodnotami

v Assembler, C, C++, Pascal, Java

2

304

09.12.2012 10:43

nBXXL Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra