Ruzne tridy do zasobniku – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ruzne tridy do zasobniku – C / C++ – Fórum – Programujte.comRuzne tridy do zasobniku – C / C++ – Fórum – Programujte.com

 

Maggie
~ Anonymní uživatel
1 příspěvek
20. 8. 2012   #1
-
0
-

Ahoj potrebuju poradit.

Mam ruzne tridy, napr. kruznice, obdelnik, usecka, bod. Potrebuju temito tridami naplnit zasobnik. Nevi nekdo jak na to?

Predm diky

Nahlásit jako SPAM
IP: 85.161.148.–
KIIV
~ Moderátor
+43
God of flame
20. 8. 2012   #2
-
0
-

polymorfizmus (teda pokud ses v C++) .. v C bys to musel mit asi jako union struktur s oznacenim co je co

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Tom
~ Anonymní uživatel
434 příspěvků
20. 8. 2012   #3
-
0
-

Zalezi asi co s nima chces (predpokladam, ze mluvime o objektech a ne tridach). Pokud chces implementovat nejaky svuj vlastni zasobnik, tak toho najdes na netu tuny. Pokud se bavime o zasobniku procesu (ohranicenem registry EBP a ESP), tak tam by mohlo stacit je vytvorit jako lokalni promenne (bez operatoru new).

Nahlásit jako SPAM
IP: 89.102.36.–
TheOndrap
~ Anonymní uživatel
305 příspěvků
20. 8. 2012   #4
-
0
-

#3 Tom
:D COŽEEE co je to za snůšku nesouvislých věcí

Nahlásit jako SPAM
IP: 88.102.250.–
Tom
~ Anonymní uživatel
434 příspěvků
20. 8. 2012   #5
-
0
-

#4 TheOndrap
Mozna sem jen spatne pochopil zadani, ale zas tak nesouvisle jsem nemluvil ne? Stack, registry, vytvoreni promennych na stackua  ne na heapu....to spolu vsechno souvisi ne? Ale rad se necham poucit :)

Nahlásit jako SPAM
IP: 89.102.36.–
vitamin+8
Grafoman
20. 8. 2012   #6
-
0
-

#5 Tom
 

Mam ruzne tridy, napr. kruznice, obdelnik, usecka, bod. Potrebuju temito tridami naplnit zasobnik. Nevi nekdo jak na to?

A ty mu na to povies ze ma pouzit lokalne premenne :)

Samozrejme lokalne premenne sa ukladaju na programovom zasobniku, ale pochybujem ze mu to pomoze s jeho/jej problemom...

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Tom
~ Anonymní uživatel
434 příspěvků
20. 8. 2012   #7
-
0
-

#6 vitamin
Dobre, dobre, evidentne jsem nepochopil dotaz....a stale bohuzel tapu. Ja to pochopil tak, ze ma uz napsane nejake tridy Kruznice, Obdelnik, atp. a ted potrebuje dostat jejich objekty na stack. Pravda....duvod jsem uplne nepochopil, ale treba slo o cast nejakeho zadani ve skole, kde probiraji rozdil mezi heapem a stackem....Co ja vim. Vstecka koule je zrovna rozbita :(

Nahlásit jako SPAM
IP: 89.102.36.–
Tom
~ Anonymní uživatel
434 příspěvků
20. 8. 2012   #8
-
0
-

#6 vitamin
...a jako dodatek bych doplnil, ze mi ten muj nesouvisly zvast o tom, jak se plni zasobnik vecma, prisel poucnejsi nez KIIVova puvodni odpoved slozena z jedineho slova "polymorfizmus" (editu jsem si vsiml, az po odeslani sveho prispevku....nicmene stejne...).

Nahlásit jako SPAM
IP: 89.102.36.–
vitamin+8
Grafoman
20. 8. 2012   #9
-
0
-

#8 Tom
V tomto pripade si myslim ze to jedno slovo "polymorfizmus" bude pre tazatela velmi poucne a zrejme mu pomoze viac ako pochopenie ako funguje programovy stack   Tak ci tak bude asi musiet googlit.

Ja by som to vyriesil tak, ze by som vytvoril abstraktnu bazovu triedu ktoru by dedili vsetky tie geometricke utvary a do stacku by som vkladal pointre na tu bazovu triedu.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
TheOndrap
~ Anonymní uživatel
305 příspěvků
20. 8. 2012   #10
-
0
-

Tak nám řekni v čem to píšeš a potom budeme chytřejší.

Pokud je to v C++, máš vyhráno. Použiješ obecnou třídu "obrazec" a od ní budou zděděny třídy "bod", "obdélník" .. ( pro další info bych tě odkázal na nějaký článek o OOP v C++ ..

Pokud to bude v C tak bych zapátral nad konstrukcí "void *p;" tak se dá v C dělat jakž takž obecný ukazatel na cokoli.

Tom, co ti mam na to říct .. nezazářil jsi :D

Nahlásit jako SPAM
IP: 88.102.250.–
reciproke0
Návštěvník
20. 8. 2012   #11
-
0
-

#1 Maggie

Nastuduj si základy OOP.

A kdo uzná za vhodné se podívá na registry x86 ať neni příště tak v šoku.

Nahlásit jako SPAM
IP: 82.208.4.–
Tom
~ Anonymní uživatel
434 příspěvků
20. 8. 2012   #12
-
0
-

#10 TheOndrap
Ok, beru....zrejme mame kazdy jiny pohled na "problematiku" stacku

Nahlásit jako SPAM
IP: 89.102.36.–
yaqwsx+9
Posthunter
20. 8. 2012   #13
-
0
-

#10 TheOndrap
Ze zkušenosti doporučuji v C používat strukturu s jedním enum a unionem - udělá program mnohem přehlednějším (vyhneš se dynamickému alokování u každé položky - což je pro začátečníka obvzlášť přínosné). Samozřejmě je ideální pokud mají položky podobnou velikost, jinak je to plýtvání pamětí.

Ale jelikož tazatel zmiňuje třídy, tak dělá v C++ a můj příspěvek pro něj není příliš přínosný.

Nahlásit jako SPAM
IP: 85.160.53.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
ingiraxo+15
Grafoman
20. 8. 2012   #14
-
0
-

takto dopadá, když se autor neumí pořádně vyjádřit... ale z 90% myslí C++

jinak použij polymorfismus, jak tu bylo několikrát uvedeno

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Tom
~ Anonymní uživatel
434 příspěvků
20. 8. 2012   #15
-
0
-

Ja vim, ze budu opet pranyrovan, ale jste si jisti, ze autor prispevku potrebuje poradit s tim, jak vytvorit/navrhnout tridy Obdelnik, Kruznice, whatever? Mne se podle dotazu spis zda, ze tyto tridy uz ma navrzene/objekty vytvorene, ale potreboval by nejak pomoct s jejich pushnutim do zasobniku (at uz mysli jakykoliv). Polymorfismus (jak navrhoval KIIV) resi navrh trid...muj prispevek zase zasobnik (ac ne moc podrobne, pac nevim, jaky zasobnik mel autor na mysli).

Nahlásit jako SPAM
IP: 89.102.36.–
ingiraxo+15
Grafoman
20. 8. 2012   #16
-
0
-

má na mysli normální zásobník napr. stack<T> nebo vlastní třídu stylem pole (push/pop) a do toho chce vložit tyto objekty... tohle musí resit pres polymorfismus, pokud neví co to je, tak google a naucit se zaklady OOP

ty Tome, ale mě přijde, že vůbec nechápeš co chce a píšeš mimo téma stále, u toho tvého prvního příspěvku jsem si tady nahlas ríkal "WTF" :)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Tom
~ Anonymní uživatel
434 příspěvků
20. 8. 2012   #17
-
0
-

#16 ingiraxo
Jo, uz mi dava smysl, co pravdepodobne chtel. Zrejme jsem to prvnim prispevkem pojal moc ze siroka...

Nahlásit jako SPAM
IP: 89.102.36.–
ingiraxo+15
Grafoman
20. 8. 2012   #18
-
0
-

 Jinak jedno možné řešení...

#include <iostream>
#include <stack>
using namespace std;

class Base {
public:
	// pouze pro ukazku kvuli polymorfismu
	virtual void something() = 0;
};
class Kruh : public Base {
public:
	int mKruh;
	Kruh() : mKruh(10) { }
	virtual void something() { }
};
class Ctverec : public Base {
public:
	int mCtverec;
	Ctverec() : mCtverec(20) { }
	virtual void something() { }
};

int main()
{
	stack<Base*> prvky;

	prvky.push(&Kruh());
	prvky.push(&Ctverec());

	Ctverec* c = (Ctverec*)prvky.top(); prvky.pop();
	Kruh* k = (Kruh*)prvky.top(); prvky.pop();

	cout << "Kruh: " << k->mKruh << ", Ctverec: " << c->mCtverec;

	cin.get();
	return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
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, 10 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ý