Registr tříd pro herní engine – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Registr tříd pro herní engine – C / C++ – Fórum – Programujte.comRegistr tříd pro herní engine – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
MiCizek0
Stálý člen
10. 9. 2017   #1
-
0
-

   

Právě přemýšlím, jak navrhnout registr tříd pro mé herní engine. Mohu použít Alias pro konverzi třídy? 

Rád bych použil něco podobného, co jsem kdysi viděl v CryEngine 3.

Mám zkušenosti, že když napíšu něco takového: 

class bla1 {};
class bla2: public bla1 {};

bla1 *pBla = new bla2;
delete pBla;

tak se volá jen destruktor bla1.

Děkuji za odpověď.

Nahlásit jako SPAM
IP: 109.81.211.–
Reklama
Reklama
Kit+12
Guru
10. 9. 2017   #2
-
0
-

#1 MiCizek
Co třeba vzor Simple Factory? Jinak fakt nevím, pod si pod pojmem "registr tříd" mám představit.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
gna
~ Anonymní uživatel
404 příspěvků
10. 9. 2017   #3
-
0
-

Když uděláš ten destruktor virtuální, tak se zavolá ten správný (resp. oba).

Nahlásit jako SPAM
IP: 213.211.51.–
MiCizek0
Stálý člen
10. 9. 2017   #4
-
0
-

#2 Kit
Jde o to, že většina tříd v herním enginu a ve hrách  vycházejí z jedné třídy, plus né všechno je tam řešeno natvrdo kódem a občas je potřeba vytvořit nějaký objekt např střelná zbraň za běhu programu.

Nahlásit jako SPAM
IP: 109.81.211.–
KIIV
~ Moderátor
+42
God of flame
10. 9. 2017   #5
-
0
-

#4 MiCizek
Alespon zakladni trida musi mit virtualni destruktor. Nicmene pro prehlednost je lepsi, pokud pouzivaji klicove slovo virtual i odvozene tridy. (Plus u prepsanych metod zase pouzivat i override, aby bylo zrejme, ze maji za ukol prepsat nejakou metodu ze zdedene tridy - a pokud ses nahodou sekl v prototypu, tak te to upozorni, ze si nic nepredefinoval)

class bla1 {
  public:
    bla1() { std::cout << "bla1()\n"; }
    virtual ~bla1() { std::cout << "~bla1()\n"; }
};

class bla2: public bla1 {
  public:
    bla2() { std::cout << "bla2()\n"; }
    ~bla2() { std::cout << "~bla2()\n"; }
};

int main()
{
  bla1 *pBla = new bla2;
  delete pBla;
}
Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 56 hostů

Podobná vlákna

Herní Engine — založil Mihulik

Herní engine — založil Big_Ping

C# herní engine — založil Gobik

Herní engine Ogre 3d — založil Felen

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý