Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Mnemonic

Založen: 28. 07. 2007 Příspěvky: 93
|
Zaslal: 10. srpen 2007, 19:26:52 Předmět: |
|
|
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?
Chjoodge napsal: |
Je potřeba naalokovat novou paměť (new), zkopírovat (memcpy) a uvolnit starou (delete). |
Jinymi slovy: new, memcpy, delete. |
|
Návrat nahoru |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 10. srpen 2007, 19:51:33 Předmět: |
|
|
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 |
|
 |
Mem

Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 10. srpen 2007, 20:28:24 Předmět: |
|
|
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  |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 10. srpen 2007, 21:15:44 Předmět: |
|
|
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 |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 10. srpen 2007, 21:31:05 Předmět: |
|
|
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 |
|
 |
Lemik
Založen: 30. 07. 2007 Příspěvky: 138
|
Zaslal: 10. srpen 2007, 21:35:40 Předmět: |
|
|
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 |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 10. srpen 2007, 21:36:36 Předmět: |
|
|
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 |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 10. srpen 2007, 21:41:07 Předmět: |
|
|
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 |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 10. srpen 2007, 21:50:24 Předmět: |
|
|
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 |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 10. srpen 2007, 22:57:32 Předmět: |
|
|
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 |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 10. srpen 2007, 23:32:26 Předmět: |
|
|
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 |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 11. srpen 2007, 07:18:02 Předmět: |
|
|
nou - jeste drobny dotaz - cim kompilujes? |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 11. srpen 2007, 15:32:25 Předmět: |
|
|
VS6 ano je to satre a mam stiahnete aj 2005 ale mam srot pocitac(sietove meno je SROT )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 |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 11. srpen 2007, 16:00:47 Předmět: |
|
|
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 |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 11. srpen 2007, 16:22:39 Předmět: |
|
|
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 |
|
 |
|