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

2 třídy – C / C++ – Fórum – Programujte.com2 třídy – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
liamlim0
Newbie
12. 11. 2013   #1
-
0
-

Zdravím všechny. Po nějaké době se sem znovu obracím s dotazem, protože něčemu nerozumím. Tentokrát je asi vše úplně jednoduché, jen nevím, jak na to. Snažil jsem se o to deklarovat dvě třídy tak, aby každá obsahovala ukazatel na další třídu a ukazatel na třídu toho typu, kterého je. Můj cíl by měl osvětlit nefunkční případ dvou souborů, u kterého vím, proč nefunguje. Ale jde na něm vidět o co se pokouším.

edit: Vím, že nemůže a.hpp vkládat b.hpp a naopak. Psal jsem, že je to nefunkční případ. Měl upozornit na ty ukazatele v soukromé části. O něco takového se snažím.
 

// a.hpp
#ifndef A_HPP
# define A_HPP
# include "b.hpp"

class A
{
public: 
	A() {}
	virtual ~A() {}
	
private:
	A * p_a;
	B * p_b;
};

# endif
// b.hpp
#ifndef B_HPP
# define B_HPP
# include "a.hpp"

class B
{
public:
	B() {}
	virtual ~B() {}
	
private:
	B * p_b;
	A * p_a;
};

# endif

Další soubor už by byl jen main.cpp který by obsahoval funkci main a vkládal by soubory a.hpp a b.hpp

otázka: Jak by bylo možné nejlépe vyřešit, aby každá z těchto dvou tříd obsahovala ukazatel na druhou třídu? 

můj nápad: Vytvořil bych třídu C, a třídu A i B bych z ní dědil. Potom by ale podle mě stejně mohla každá třída obsahovat jen ukazatel na C, ale ne na druhou z těch tříd.

Za nějaké návrhy a odpovědi bych byl moc rád. Díky

Nahlásit jako SPAM
IP: 93.99.200.–
Řešení
vitamin+8
Grafoman
12. 11. 2013   #2
-
0
-
Vyřešeno Nejlepší odpověď

   

// a.hpp
#ifndef A_HPP
#define A_HPP

class B;

//#include "b.hpp"	//toto staci vlozit do A.cpp

class A
{
public: 
	A() {}
	virtual ~A() {}
	
private:
	A * p_a;
	B * p_b;
};

# endif
// b.hpp
#ifndef B_HPP
#define B_HPP

class A;

//#include "a.hpp" //staci dat do B.cpp

class B
{
public:
	B() {}
	virtual ~B() {}
	
private:
	B * p_b;
	A * p_a;
};

# endif
Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
liamlim0
Newbie
12. 11. 2013   #3
-
0
-

#2 vitamin

díky za odpověď, jen si nejsem jistý jestli ji správně chápu. Pochopil jsem to tak, že řádky include mám vložit do dvou souborů .cpp . Stejně mi to ale nejde


edit:  myslím že už chápu. díky!

Nahlásit jako SPAM
IP: 93.99.200.–
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, 19 hostů

Podobná vlákna

Tridy — založil Gadael

Tridy — založil Omfg

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ý