.[ ČeskéHry.cz ].
blby konstruktor
Jdi na stránku Předchozí  1, 2, 3  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Mnemonic



Založen: 28. 07. 2007
Příspěvky: 93

PříspěvekZaslal: 10. srpen 2007, 19:26:52    Předmět: Odpovědět s citátem

Chjoodge napsal:
Je tam zásadní rozdíl - memcpy nic neuvolňuje ani nealokuje. Ekvivalent realloc v tomhle smyslu neexistuje.

A ja jsem snad tvrdil, ze memcpy neco uvolnuje a alokuje? Smile

Chjoodge napsal:

Je potřeba naalokovat novou paměť (new), zkopírovat (memcpy) a uvolnit starou (delete).

Jinymi slovy: new, memcpy, delete.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 10. srpen 2007, 19:51:33    Předmět: Odpovědět s citátem

mne ten zdrojak z pastebinu funguje uplne normalne, kostruktory se volaji kdy maji.

Jiank ohledne toho realokovani poli bych doporucil pouzit rovnou nejaky kontejner list / deque / vector / map .
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 10. srpen 2007, 20:28:24    Předmět: Odpovědět s citátem

Chjoodge napsal:
Mnemonic napsal:
new, memcpy, delete

Je tam zásadní rozdíl - memcpy nic neuvolňuje ani nealokuje. Ekvivalent realloc v tomhle smyslu neexistuje. Je potřeba naalokovat novou paměť (new), zkopírovat (memcpy) a uvolnit starou (delete).

No vzdyt presne to Mnemonic pise, tak se s nim nehadej, kdyz myslis totez Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



Založen: 28. 07. 2007
Příspěvky: 1051

PříspěvekZaslal: 10. srpen 2007, 21:15:44    Předmět: Odpovědět s citátem

Weny Sky napsal:
mne ten zdrojak z pastebinu funguje uplne normalne, kostruktory se volaji kdy maji.

Jiank ohledne toho realokovani poli bych doporucil pouzit rovnou nejaky kontejner list / deque / vector / map .

ano ten od Chodjodge funguje tak ako ma. ale ak mate v nejakej triede ako staticku premenu druhu triedu tak to robi blbosti a nevola sa kostruktor. viete preco??
kód:
class trieda1{
trieda1(){printf("konstruktor 1");}
};
class trieda 2{
trieda1 lol;}

pri takomto pouziti sa konstruktor nevola
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 10. srpen 2007, 21:31:05    Předmět: Odpovědět s citátem

nou napsal:
Weny Sky napsal:
mne ten zdrojak z pastebinu funguje uplne normalne, kostruktory se volaji kdy maji.

Jiank ohledne toho realokovani poli bych doporucil pouzit rovnou nejaky kontejner list / deque / vector / map .

ano ten od Chodjodge funguje tak ako ma. ale ak mate v nejakej triede ako staticku premenu druhu triedu tak to robi blbosti a nevola sa kostruktor. viete preco??
kód:
class trieda1{
trieda1(){printf("konstruktor 1");}
};
class trieda 2{
trieda1 lol;}

pri takomto pouziti sa konstruktor nevola


a nemel by se volat v tomto pripade nahodou?

kód:
class trieda1{
trieda1(){printf("konstruktor 1");}
};
class trieda2{
trieda1 lol;}

trieda2 t; // !!! TADY !!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Lemik



Založen: 30. 07. 2007
Příspěvky: 138

PříspěvekZaslal: 10. srpen 2007, 21:35:40    Předmět: Odpovědět s citátem

Pokud se nepletu, tak samotná deklarace není inicializací,
a v případě static member proměnné je potřeba jí inicializovat ručně
v konstruktoru..
( vzpomínám z hlavy, pokud je to blbost tak pardon.. )
kód:

class trieda1
{
public:
    trieda1()
    {
        printf("konstruktor 1");
    }
};
class trieda2
{
public:
    trieda2()
    {
        static trieda1 lol;
    }
private:
    static trieda1 lol;};
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 10. srpen 2007, 21:36:36    Předmět: Odpovědět s citátem

no hlavne IMHO musi byt konstruktor public polozkou tridy

EDIT: dukaz misto slibu


Naposledy upravil Weny Sky dne 10. srpen 2007, 21:45:11, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 10. srpen 2007, 21:41:07    Předmět: Odpovědět s citátem

Lemik napsal:

kód:
class trieda2
{
public:
    trieda2()
    {
        static trieda1 lol;
    }
private:
    static trieda1 lol;};
Inicializace staticke polozky tridy se provadi takto

kód:
class trieda2
{
public:
    trieda2(){};
private:
    static trieda1 lol;
};

trieda1 trieda2::lol;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 10. srpen 2007, 21:50:24    Předmět: Odpovědět s citátem

nou napsal:
ale ak mate v nejakej triede ako staticku premenu druhu triedu tak to robi blbosti a nevola sa kostruktor. viete preco??

Tak za prve, staticka promenna je takova, ktera ma pred jmenem slovo static. V tvem kodu zadnou takovou nevidim. A ten konstruktor se proste musi volat a pokud ne, tak tam mas spatne neco jinyho.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1051

PříspěvekZaslal: 10. srpen 2007, 22:57:32    Předmět: Odpovědět s citátem

tak som to preskusal uz rozne ale stale to nejde. no nic tak to bude robit cez operator new tam sa konstruktor vola. je to naozaj cudne pretoze sa tak sprava akakolvek trieda. ak si ale skusim vytvori novy projekt tak tam to funguje podla ocakavani. naozaj nechapem.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 10. srpen 2007, 23:32:26    Předmět: Odpovědět s citátem

Nou, ale mne funguje spravne i ten tvuj kod, ktery si posilal na pastebin. Jeho vystup, pokud hodim do metody Core::Init
kód:
ptextura = new TextureRes;//zavola sa konstruktor
textura.SetFilter(1,2);//pri statickom sa nezavola konstruktor
ptextura->SetFilter(1,2);


kód:
AF: 0
AF: -431602080


jinak, jak vlastne zjistujes, ze byl zavolan konstruktor? Debugerem nebo jen vypisem tech textovych zprav?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 11. srpen 2007, 07:18:02    Předmět: Odpovědět s citátem

nou - jeste drobny dotaz - cim kompilujes?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1051

PříspěvekZaslal: 11. srpen 2007, 15:32:25    Předmět: Odpovědět s citátem

VS6 ano je to satre a mam stiahnete aj 2005 ale mam srot pocitac(sietove meno je SROT Laughing )asi to bude fakt tou 6. a ano zistujem ci sa zavolal konstrktor pomocou printf(""); mam to presmerovane do stdout.txt vdaka SDL takze tam niekedy vypisujem kB dat ako debug mod lebo vo VS6 je debuger dobry akurat tak na Hello World.

inak zaujimave ze vypisalo dve rozdielne hodnoty. lebo zistujem tam max pouzitelne anisotrompne filtrovanie a malo by to byt teda 2 4 8 alebo 16.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 11. srpen 2007, 16:00:47    Předmět: Odpovědět s citátem

no ona VS 6 v necem porusovala normy, ale aby nevolala konstruktory, tak to je IMHO blbost. Ja si osobne myslim ze je vola i tobe, jenze se ti to nevypise v SDL konzoli, protoze neni jeste inicializovana ... treba. A proto na zisteni pouzij debuger.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



Založen: 28. 07. 2007
Příspěvky: 1051

PříspěvekZaslal: 11. srpen 2007, 16:22:39    Předmět: Odpovědět s citátem

moj podpis to potvrdzuje. je to tak. ak necham otvorit konzolu normalne do okna tak to funguje a konstruktor sa zavola. ono az volanie SDL_Init() otvori konzolu do stdout.txt. nakoniec ta chyba ani nebola chybou. ech stale sa mi potvrdzuje to moje
|
|
V
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna