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

Seznam - ze struct na třídu – C / C++ – Fórum – Programujte.comSeznam - ze struct na třídu – C / C++ – Fórum – Programujte.com

 

kotrfa
~ Anonymní uživatel
4 příspěvky
13. 11. 2012   #1
-
0
-

Ahoj.

Sestavil jsem linked list, který obsahuje možnost uložení zaměstnance (jméno, příjmení, plat) s funkcemi je seřadit dle platu, vyexportovat a smazat. Potřebova bych to ale přepracovat z C do C++ a použít tam třídy. Detaily (jako cout, cin místo printf, scanf atp.) zvládnu. Ale potřeboval bych poradit hlavně s tím přetvořením struct na třídu. Například pro nového zaměstnance mám header:

#ifndef ZAM_H_INCLUDED
#define ZAM_H_INCLUDED

typedef struct zam
{
    char jmeno[30];
    //char *p_jmeno;
    char prijmeni[30];
    //char *p_prijmeni;
    int plat;
    struct zam *next;
    struct zam *prev;
} ZAM;


#endif // ZAM_H_INCLUDED

Díky.

Nahlásit jako SPAM
IP: 94.112.34.–
reciproke0
Návštěvník
13. 11. 2012   #2
-
0
-

a v čem je problém? ...ještě můžeš místo pole charů použít string.





class zam
{
public:
    char jmeno[30];
    char prijmeni[30];
    int plat;
    zam *next;
    zam *prev;
};

 

Nahlásit jako SPAM
IP: 82.208.4.–
KIIV
~ Moderátor
+43
God of flame
13. 11. 2012   #3
-
0
-

krom toho struct je trida s defaultnim public: ...  class je s defaultnim private:

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
ingiraxo+15
Grafoman
13. 11. 2012   #4
-
0
-

v v C++ nemusíš používat typedef zápis jako v C, takže já bych to do C++ převedl jako 

struct Zam
{
    string jmeno;
    string prijmeni;
    unsigned int plat;
    Zam* next;
    Zam* prev;
}; // vytvoreni promenny si udelej az ve funkci (jinde)

a nepredelavej to do tridy, pro takovej malej jednoduchej objekt je mnohem lepsi struktura

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Radek Chalupa
~ Redaktor
+1
Super člen
13. 11. 2012   #5
-
0
-

#4 ingiraxo
V tomhle případě asi jediná výhoda třídy by byla že si v konstruktoru inicializuje ty pointry na NULL a progam pak bude blbuvzdornější:-)

Popř. může si udělat get/set metody na "plat" kde zase zabrání naplnění nějakými nesmysly v kódu kde tu třídu použije.

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
ingiraxo+15
Grafoman
13. 11. 2012   #6
-
0
-

#5 Radek Chalupa
a co třeba přidat do struktůry konstruktor? 

Zam() : next(nullptr), prev(nullptr) { }
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
reciproke0
Návštěvník
13. 11. 2012   #7
-
0
-

Tak zásadní je zda to chce přepsat do C++ a class využít jen formálně, nebo smysluplně využívat vše co má.

Nahlásit jako SPAM
IP: 82.208.4.–
kotrfa
~ Anonymní uživatel
4 příspěvky
16. 11. 2012   #8
-
0
-

Bohatě by mi stačilo, kdybych to přepsal jen "formálně". Využívat to ani tak netoužím. Je tedy potřebovat konstruktory/destruktory? 

A pokud to tedy změním v tomto headeru, jaké změny pak musím provést v těch metodách, co jsou momentálně napsány pro struct?

Díky

Nahlásit jako SPAM
IP: 94.112.34.–
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, 65 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ý