C++ osoitinvektorin syöttö parametrina

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?
3336
Äänestä

Muut lukivat myös

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

Äänestä

Oletko määritellyt tuon luokan oikeassa paikassa elikkäs globaaliksi.

Äänestä

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
}

Äänestä

Kommentoi aloitusta


Kaipaa apua kirjoitti:

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?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu