Miten C++:n luokat voi jakaa eri tiedostoihin? Mitä tietoa kerron luokasta .h -tiedostossa?
Koodivinkki aiheesta:
https://www.ohjelmointiputka.net/koodivinkit/
Ei tämä toimi... Valittaa että redefinition of `class...
#ifndef MY_HEADER_FILES_GUARD_IDENTIFIER
#define MY_HEADER_FILES_GUARD_IDENTIFIER
class Luokka {
...
};
#endif
jospa laittaisit enemmmän koodia? Esim sieltä minne includetat tuon...
teet näin:
main.cpp
#include "luokka.h" //täällä pitää includeta luokka tai sitä ei voi käyttää int main() { Luokka a; a.moi("hoh"); return 0; }
luokka.h
#ifndef LUOKKA_H_TAHAN_IHAN_MITA_TAHANSA_UNIIKKIA #define LUOKKA_H_TAHAN_IHAN_MITA_TAHANSA_UNIIKKIA #include <iostream> /*täällä esitellään luokka, jos on jotain headereita mitä tarvit esim. jonkun kirjaston niin esittele ne täällä jos kääntäjä valittaa.. mutta älä enää includeta niitä muualla.*/ class Luokka { public: void moi(String viesti); }; #endif
luokka.cpp
#include "luokka.h" //tässä tiedostossa kirjoita funktioille sisältö void Luokka::moi(String viesti) { std::cout << "moi, tämä onnistuu koska iostream includettiin jo luokka.h:ssa"; }
EDIT: tuo luokka.h ei tarvi tuota iostreamia joten sen voi ihan hyvin vaihtaa luokka.cpp:hen.
Heh, parempi etten laita... Metodit kuuluu olla cpp-tiedostossa näköjään tässä muodossa:
double Luokka::tilavuus() const { return sivu * sivu * sivu; }
Ei siis tässä muodossa:
class Luokka { public: double tilavuus() const { return sivu * sivu * sivu; } }
Jee, nyt toimii luokkien jakaminen tiedostoihin...
Aihe on jo aika vanha, joten et voi enää vastata siihen.