Hei kaikille, en ole ohjelmoinut kovin paljon c :lla, tarvitsisin pientä apua.
jos syötän parametrina osoitinvektorin esimerkiksi funktioon niin kääntäjä ei toimi aina. Minulla on Dev-C kääntäjä.
Esimerkki:
int palautaJotain1(vector v){
//koodia
}
ja
int palautaJotain2(vector v){
//koodia
}
toimivat kun taas jos olen luonut oman luokan jonka ilmentymiä olen syöttänyt vektoriin niin homma ei toimikaan.
Esimerkki:
int palautaJotain2(vector v){
//koodia
}
ei toimi. Palauttaa seuraavanlaisen virheilmoituksen:
Omaluokka was not declared in this scope.
Jos luon ilmentymiä normaalisti niin tai syötän parametrina ilmentymän homma toimii.
Missähän vika piilee?
jos syötän parametrina osoitinvektorin esimerkiksi funktioon niin kääntäjä ei toimi aina. Minulla on Dev-C kääntäjä.
Esimerkki:
int palautaJotain1(vector v){
//koodia
}
ja
int palautaJotain2(vector v){
//koodia
}
toimivat kun taas jos olen luonut oman luokan jonka ilmentymiä olen syöttänyt vektoriin niin homma ei toimikaan.
Esimerkki:
int palautaJotain2(vector v){
//koodia
}
ei toimi. Palauttaa seuraavanlaisen virheilmoituksen:
Omaluokka was not declared in this scope.
Jos luon ilmentymiä normaalisti niin tai syötän parametrina ilmentymän homma toimii.
Missähän vika piilee?
Vastaukset 3
Vanhimmat
En aivan täysin ymmärtänyt ongelmaasi ja luslussani on hieman ruosteessa, mutta...
"Omaluokka was not declared in this scope."
Mikä tämän palauttaa? Kääntäjä? Jos kääntäjä herjaa, niin silloin se ei näe käännösaikana luokan OmaLuokka määrittelyä eikä osaa siten kääntää tuota metodia. Laita luokasta OmaLuokka esittely johonkin header-tiedostoon ja tuuppaa include kyseiseen headeriin. Näin kääntäjä näkee minkälainen värkki OmaLuokka on ja osaa kääntää metodin.
my 2c
Oletko määritellyt tuon luokan oikeassa paikassa elikkäs globaaliksi.
tuossapa taitaa olla ongelmana juurikin se, ettet ole includoinut sen luokan headeriä sinne, missä yritätkin käyttää tuota omaa luokkaa. ja vielä using -lauseet kuntoon, niin ehkä sitten toimisi.
suurempi virhe on kuitenkin siinä, että oman luokan ilmentymät eli oliot olisi hyvä välittää funktiolle viitteinä eli lisäämällä se & merkki sinne. olioiden kopioiminen kun on aina hieman konstikasta.
int palautaJotain2(vector v){
//koodia
}
tuossa ylemmässä kun koko vectori kopioidaan sinne funktion omalle näkyvyysalueelle.
eli mieluummin näin:
int palautaJotain2(vector& v){
//koodia
}