Olen kirjoittanut ohjelmaa, jossa autolle on tehty luokka "auto". Ajattelin kokeilla värejä luettelutyyppisinä (enum) seuraavasti:
enum vari {musta, valkoinen,
sininen, punainen};
Pulmana on siis värin alustaminen konstruktorissa mustaksi (Käyttäjä vois myöhemmin muutella). Meneekö se koodi tällain:
auto::auto()
{
... //Muuta koodia
vari {musta};
... //Muuta koodia
}
Jos ei mene noin niin miten sen saa?
enum vari {musta, valkoinen,
sininen, punainen};
Pulmana on siis värin alustaminen konstruktorissa mustaksi (Käyttäjä vois myöhemmin muutella). Meneekö se koodi tällain:
auto::auto()
{
... //Muuta koodia
vari {musta};
... //Muuta koodia
}
Jos ei mene noin niin miten sen saa?
Vastaukset 3
Vanhimmat
enum vari {musta, valk}; esittelee vasta enum-tyypin.
muuttuja pitää esitellä:
vari auton_vari;
ja arvo asetetaan:
auton_vari = musta;
Tiedän, että muuttuja pitää esitellä pääohjelmassa, mutta esitelläänkö muuttuja myös sovellustiedostossa, jossa on konstruktorin koodi?
Tämä juttu on jäänyt hieman epäselväksi.
Luokan esittelyyn muuttuja, ja enum-tyypin esittely pitää sitä ennen olla esitelty jossakin, esim. auto.h-tiedostoon:
---
enum VARI {MUSTA, PUNAINEN};
class Auto {
public:
Auto();
virtual ~Auto();
private:
VARI vari;
};
---
ja auto.cpp
---
#include "auto.h"
Auto::Auto() {
vari = MUSTA;
}
...