Pointer ze struktury na strukturu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Pointer ze struktury na strukturu – C / C++ – Fórum – Programujte.comPointer ze struktury na strukturu – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
David
~ Anonymní uživatel
131 příspěvků
28. 3. 2013   #1
-
0
-

 Zdravim kdyz mam tuto třídu a v ní 2 struktury. Jak mám udělat pointery abych mohl odkazovat z jedné na druhou a naopak?

řekněme že potřebuju něco takového:

vlast[0].name1 = "pepa";
vlast[0].adr1 = "Praha";
vlast[1].name1 = "Pavel";
vlast[1].adr1 = "Brno";

firms[0].name2 = "Lakovna"
firms[0].adr2 = "Sesta Ulice";

Jak to mám udělat tak abych nemusel pro oba Vlastníky zapsat stejnou firmu 2x ale mít ji zapsanou jen 1x a okazovat se na ni pointrama, a třeba pak v metodě vypsat druhého uživatele a jeho firmu ?

class CCompanyIndex
 {
   public:
    struct Vlastnici
    {
        string  name1;
        string  adr1;
        struct Firmy * list_F[50];
    };
    struct Firmy
    {
        string  name2;
        string  adr2;
        struct Vlastnici * list_V[50];
    };
    Vlastnici * vlast;
    Firmy * firms;
};
Nahlásit jako SPAM
IP: 46.135.5.–
Reklama
Reklama
vitamin+8
Grafoman
28. 3. 2013   #2
-
0
-

#1 David
Jedna z moznosti je mat centralny zoznam vsetkych firiem a vlastnikov. Napr:

std::list<Firma> vsetky_firmy;
std::list<Vlastnik> vsetci_vlastnici;

Kazda firma bude potom obsahovat pointre na Vlastnikv a Vlastnici zas pointre na Firmy. V podstate to mas dobre, len misto pola by som pouzil vektor nech nemusis rucne alokovat/dealokovat pamet:

    struct Firmy;

    struct Vlastnici
    {
        string  name1;
        string  adr1;
        std::vector<Firmy*> list_F;
    };
    struct Firmy
    {
        string  name2;
        string  adr2;
	std::vector<Vlastnici*> list_V;
    };
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. "
Dejv
~ Anonymní uživatel
27 příspěvků
28. 3. 2013   #3
-
0
-

Ahoj díky za radu, bohužel problém je v tom že vectrory nesmíme používat... tohle je domácí úkol z C++ :(

Nahlásit jako SPAM
IP: 94.113.78.–
vitamin+8
Grafoman
28. 3. 2013   #4
-
0
-

#3 Dejv
Tak si vektor implmentuj sam, ak ste este nepreberali dynamicku alokaciu pamete tak mozes pouzit len polia:

  

const unsigned MAX = 100;

Firma vsetky_firmy[MAX];
unsigned pocet_firiem = 0;
Vlastnik vsetci_vlastnici[MAX];
unsigned pocet_vlastnikov = 0;
    struct Firmy;

    struct Vlastnici
    {
        string  name1;
        string  adr1;
       	Firmy* list_F[MAX];
	unsignd pocet_firiem = 0;
    };
    struct Firmy
    {
        string  name2;
        string  adr2;
	Vlastnici* list_V[MAX];
	unsignd pocet_vlastnikov = 0;
    };
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. "
Dejv
~ Anonymní uživatel
27 příspěvků
28. 3. 2013   #5
-
0
-

Dynamickou alokaci jsme probírali v 1. semestru v jazyce C... ale vyzkouším to takto, děkuji za radu, dám vědět zda to projde :)

Nahlásit jako SPAM
IP: 94.113.78.–
Dejv
~ Anonymní uživatel
27 příspěvků
28. 3. 2013   #6
-
0
-

Tak mi to sice funguje, ale ty pointery si ukazujou kam chteji, nebot pridavani Vlastniku a Firem mam pomoci binarniho vyhledavani tj - posouvani v poli podle velikosti stringu... tzn kdyz vlastnik[0] ukazuje na firmu[0] s nazvem "Zetor " a prijde firma ktera ma nazev "Ahold" tak se prida na pozici 0 a "Zetor" se presune na pozici 1 picemz pointer vlastnik->firma stale ukazuje na pozici 0. Jak mam toto upravit?

Nahlásit jako SPAM
IP: 94.113.78.–
vitamin+8
Grafoman
29. 3. 2013   #7
-
-2
-
Mimo téma

#6 Dejv

Zoraduj len pointre v poliach list_F a list_V.

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. "
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, 222 hostů

Podobná vlákna

Pointer na strukturu — založil Fugii

Pointer na strukturu — založil Romča

Pointer na strukturu — založil Pavelv

Strukturu new — založil pep

Ako na strukturu — založil Vestax

Moderátoři diskuze

 

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