Metoda na vytvoření dvou tříd – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Metoda na vytvoření dvou tříd – C / C++ – Fórum – Programujte.comMetoda na vytvoření dvou tříd – C / C++ – Fórum – Programujte.com

 

Tomáš
~ Anonymní uživatel
560 příspěvků
4. 1. 2015   #1
-
0
-

Dobrý den,

potřebuji poradit ze školní projektem.

Má třídu Lokace, která má potomka ExtraLokace a pak mám třídu MechanismusHry, ve které potřebuji mít jednu metodu, pomocí, které se vytvoří, jak Lokace, tak i ExtraLokace (napadlo mě nějak přes virtuální metodu, ale nějak mi to nejde), a taky je v té to třídě atribut pole do kterého potřebuji dát znovu jak Lokace tak i ExtraLokace, protože když dám, že je pole typu Lokace, tak tam nemůžu dát ExtraLokace a naopak.   

Děkuji za rady.

Nahlásit jako SPAM
IP: 91.219.240.–
q
~ Anonymní uživatel
219 příspěvků
4. 1. 2015   #2
-
+1
-
Zajímavé

Asi nejjednodušší bude použít ukazatel.

Lokace *l = (typ == extra) ? new ExtraLokace() : new Lokace();
pole.pridej(l);
return l;
Nahlásit jako SPAM
IP: 213.211.51.–
Tomáš
~ Anonymní uživatel
560 příspěvků
8. 1. 2015   #3
-
0
-

#2 q
Nějak nechápu, jak to myslíte. Zkoušel jsem to tak to ale píše to chyby. 

Hra::Lokace* Hra::MechanismusHry::vytvorLokace(Hra::Lokace* lokace) {
   Hra::Lokace *Les = new  Hra::ExtraLokace(10,10): new Hra::Lokace();
    m_lokace.at(1);
    return Les;
Nahlásit jako SPAM
IP: 91.219.240.–
KIIV
~ Moderátor
+43
God of flame
8. 1. 2015   #4
-
0
-

#3 Tomáš
ne nadarmo tam ma:     podminka  ?  splneno  :  nesplneno !!!

neco : neco   je samozrejme nesmysl

+ aby to fungovalo, musi byt ExtraLokace podedena z Lokace

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Tomáš
~ Anonymní uživatel
560 příspěvků
8. 1. 2015   #5
-
0
-

#4 KIIV
Já nechápu tu závorku (typ==extra), to mám do té ExtraLokace nadeklarovat nějaký typ=extra nebo jak?

Omlouvám se za možné hloupé otázky, ale s C++ teprve začínám. 

Nahlásit jako SPAM
IP: 91.219.240.–
KIIV
~ Moderátor
+43
God of flame
8. 1. 2015   #6
-
0
-

#5 Tomáš
To znamena, ze abys mohl vytvorit jedno nebo druhe, tak musis vedet, v jakem pripade se ma vytvorit prvni a v jakem pripade druhe...

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
8. 1. 2015   #7
-
0
-

#1 Tomáš
Mimo to do pole Lokaci klidne nacpes i ExtraLokace .. jen musis pouzivat pointery - treba vector<Lokace *>

Pak to samozrejme musi byt virtualni tridy (rozhrani tridy bude pouzivat virtual) - uplne idealni by bylo, kdyby oboje melo presne stejny interface, jen trochu jine chovani

Nahlásit jako SPAM
IP: 62.168.56.–
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

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×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, 109 hostů

Moderátoři diskuze

 

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