Samaan projektiin liittyen mulla on jatkokysymys. En halua tehdä uutta ketjua. (Mod. huom: no jos nyt kuitenkin?)
Yritän saada kahta erilaista taulukkoa parametreinä funktioon. Ensimmäinen taulukko on yksiuloiteinen string-taulukko ja toinen on kaksiuloitteinen int-tyyppinen taulukko. Niiden parametrien määrittelyjen ja headerin oikein saaminen on niin pirun hankalaa. Missä menee väärin?
Eli .h -tiedosto:
const int rivi = 5; const int sarake = 3; void print(const int, const int, string[], int [][sarake]);
päätiedosto.cpp:
int main () { string taulukko_nimet[rivi]; int taulukko_numerot[rivi][sarake]; print(rivi, sarake, taulukko_nimet, taulukko_numerot); }
Aliohjelma.cpp:
void print(const int rivi, const int sarake, string taulukko_nimet[rivi], int taulukko_numerot[][sarake]) { ... }
Ainakin g++:n virheilmoituksissa lukee:
tmp.cpp:15:72: error: use of parameter outside function body before ‘]’ token void print(const int rivi, const int sarake, string taulukko_nimet[rivi], int taulukko_numerot[][sarake]) ^
Funktion määrittelyssä nimet rivi ja sarake viittaavat funktion parametreihin eivätkä globaaleihin vakioihin, ja siksi funktio ei toimi. Jos kerran parametrien arvot olisivat kuitenkin samat kuin globaalien vakioiden arvot, voisit poistaa nuo parametrit kokonaan. Muussa tapauksessa pitää vaihtaa nimiä niin, että globaalit vakiot erottuvat parametreista.
Metabolix kirjoitti:
(17.12.2017 22:36:56): Ainakin g++:n virheilmoituksissa lukee: ...
Tein noin ja tällä hetkellä ainoa asia, mistä Visual Studio herjaa on tuo prototyypissä ja funktion otsikossa oleva string-sana, joka on punaisella alleviivattu molemmissa.
.. string taulukko_nimet[] ...
Identifier "string" is undefined. Vaikka se on määritelty pääohjelmassa.
Varmaan sitten sinulta puuttuu string-sanaan liittyvä include-rivi (tai using-lause) .h-tiedostosta. Kannattaa myös harkita vakavasti using namespace std -rivistä luopumista ja rehellistä std::-etuliitteen käyttöä erilaisten nimitörmäysten välttämiseksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.