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);
};
#endifluokka.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.