Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Olio-ohjelmointia C++:lla

jsbasic [08.06.2010 20:00:20]

#

Miten C++:n luokat voi jakaa eri tiedostoihin? Mitä tietoa kerron luokasta .h -tiedostossa?

trilog [08.06.2010 20:10:13]

#

Koodivinkki aiheesta:

https://www.ohjelmointiputka.net/koodivinkit/25174-cpp-koodin-jakaminen-eri-tiedostoihin-cpp-luokat

jsbasic [08.06.2010 21:07:03]

#

Ei tämä toimi... Valittaa että redefinition of `class...

#ifndef MY_HEADER_FILES_GUARD_IDENTIFIER
#define MY_HEADER_FILES_GUARD_IDENTIFIER

class Luokka {
...
};

#endif

vehkis91 [08.06.2010 21:07:55]

#

jospa laittaisit enemmmän koodia? Esim sieltä minne includetat tuon...

alottelijaa [08.06.2010 21:22:49]

#

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.

jsbasic [08.06.2010 21:22:55]

#

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...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta