Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 2. diel - Prvý objektová aplikácie v C ++

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Pavel Klimeš:5.7.2020 22:53

Nebo se nemusejí vytvářet složky, ale jde napsat tohle:

#include <iostream>

using namespace std;

class Trida {
public:
    void funkce(void) {
        cout << "Hello World!" << endl;
    };
};

int main() {

    Trida _instance;
    _instance.funkce();
    cin.get();
    return 0;
}
Avatar
Jakub Hrbáček:20.6.2022 12:40

Ahoj, díky za článek. Měl bych jeden dotaz ohledně #include knihoven. U toho příkladu se jedná o #include <iostream>. Jelikož je tato direktiva jak v main.cpp, tak v Zdravic.h, v programu je teda vlastně „zbytečně“ 2x. Když ji z main.cpp dám pryč, program stále funguje. Myslím, že je to pravděpodobně preprocesorem, který knihovnu zahrne do main.cpp přes #include "Zdravic.h" ještě před kompilací.

Chápu, že když bych vytvořil Zdravic jako statickou, či dynamickou knihovnu a používal je v main.cpp, tak bych se do jejich zdrojáku ani nedíval a nezjistil bych, že inkludují nějakou knihovnu, kterou inkluduji znovu v main.cpp.

Jak se to prosím tě řeší v praxi, abych vícekrát zbytečně neinkludoval stejnou knihovnu. Doufám, že jsem se dobře vyjádřil. Níže raději přikládám kód.

//main.cpp

//#include <iostream> zakomentováno
#include "Zdravic.h"
using namespace std;

int main(){
    Zdravic zdr;
    cout << zdr.pozdrav("Johny") << endl;
    return 0;
}
//Zdravic.h

#ifndef __ZDRAVIC_H_
#define __ZDRAVIC_H_
#include <iostream>
using namespace std;

class Zdravic{
    public:
        string j;
        string pozdrav(string jmeno);
};

#endif
//Zdravic.cpp

#include "Zdravic.h"

string Zdravic::pozdrav(string jmeno){
    return "Hello, " + jmeno + " from object world!";
}
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Jakub Hrbáček
DarkCoder:21.6.2022 11:15

Měl bych jeden dotaz ohledně #include knihoven. U toho příkladu se jedná o #include <iostream>. Jelikož je tato direktiva jak v main.cpp, tak v Zdravic.h, v programu je teda vlastně „zbytečně“ 2x. Když ji z main.cpp dám pryč, program stále funguje. Myslím, že je to pravděpodobně preprocesorem, který knihovnu zahrne do main.cpp přes #include "Zdravic.h" ještě před kompilací.

Přesně tak. Řeší se to stejně tak jako to máš u hlavičkového souboru - pomocí include guards.

Kdykoli je vkládán hlavičkový soubor prvně, definuje se guard __INC_ a vloží se hlavičkový soubor. Zjistí-li preprocesor, že takový guard již existuje, už k žádnému vložení téhož hlavičkového souboru nedojde.

Je na dokumentaci a dodržování těchto pravidel toho kdo vytvářel knihovnu aby poskytl jasný formát pro již vložené hlavičkové soubory.

Formát: __INC_HEADERFILE__

#ifndef __INC_IOSTREAM__
#define __INC_IOSTREAM__
        #include <iostream>
#endif
Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 3 správy z 13.