» Poradna » Programy

C++ Konstruktor

 |   |  Microsoft Windows 7 Chrome 59.0.3071.115

Ahoj,Prosím neporadil by mi tady někdo, co je na tomto kodu špatně?Mělo by se jednat jen o pouhý konstruktor ve třídě, kterému je předán INTEGERa hází mi to asi 3 errory :D díkyhttp://www.imgup.cz/image/LQaJ

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Linux Chrome 60.0.3112.78

Vždyť to tam máte napsané. Chybí vám definice destruktoru, buď ji doplňte, nebo smažte jeho deklaraci.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 59.0.3071.115

a co by mělo být v té definici konstruktoru?,díky :D

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 60.0.3112.78

Destruktoru, ne konstruktoru. Tělo může být klidně prázdné, pokud ho na nic nepotřebujete, ale v takovém případě, pokud ten destruktor není virtuální, je lepší tam deklaraci vůbec neuvádět a nechat kompilátor doplnit výchozí destruktor. Popřípadě, pokud váš kompilátor podporuje C++ 11, můžete použít operátor default.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 54.0

to je pokud se nemýlím Inicializační konstruktor ne?tak tím bych začal k tomu věku se přistupuje dynamickyhttp://www.imgup.cz/image/LQaY

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 60.0.3112.78

Jo, to je taky špatně, toho jsem si ani nevšiml, četl jsem jen chybové hlášky linkeru. Zvláštní, že se to vůbec přeložilo, asi má tazatel vypnuté warningy. Osobně bych doporučil spíše následující zápis: Kocka(int h): vek(h) {}

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 60.0.3112.78

Vlastně ne, nechal jsem se zmást, to má tazatel zrovna dobře, this není v C++ potřeba uvádět. Takže jsou vlastně správně všechny tři zápisy :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 54.0

no to je možný ale co si já matně pamatuju tak není zrovna dobrý nechat proměnné s právy typu public ,ale dneska už se doba zřejmě změnila už to je docela dlouho co jsem C++ neviděl

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 54.0

Ono obecně to je lepší psát tímhle způsobem co popisuješ ten kod je pak mnohém přehlednější když těch funkcí a konstruktoru tam máš víc.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 59.0.3071.115

moc nechápu, cože tam bylo ještě špatně, díky

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 60.0.3112.78

Nic, jak jsem si následně sám sobě odpověděl. Alespoň jsme vám ukázali další dva možné zápisy :) Nicméně, public atributům se snažte spíše vyhýbat, pokud nejsou const.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 59.0.3071.115

děkuju :) jen můžu se prosim zeptat, jak by to vypadalo ještě kdyby tam byl ten destruktor inicializovaný?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 60.0.3112.78

~Kocka() {} nebo ~Kocka() = default; Pokud hodláte z třídy Kocka odvozovat podtřídy, tak doporučuji udělat destruktor virtuální, takže: virtual ~Kocka() {} nebo virtual ~Kocka() = default;

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: C++