Olen tätä asiaa googlannut ja oppaista etsinyt, ei vain ole auttanut. Eli haluaisin yksinkertaisesti lähettää olion oman luokkansa funktiolle parametrina. Esim.
class Luokka { void Jotain(); }; void Luokka::Jotain() { //koodia } int main() { Luokka Olio; Olio.Jotain(); }
Niin mitä tuon Kaikkea::Jotain()-funktion kaikkien sulkeiden sisään tulisi laittaa, jotta Olio saataisiin sinne? Kiitos :)
void Luokka::jotain(Luokka Olio);
tuota oon jo kokeillut mutta kokeillaan uudestaan...
Ei mitään. Jäsenfunktiolla on tiedossa oma olionsa ilman erillistä parametria.
https://www.ohjelmointiputka.net/oppaat/opas.
Eli tällaistako?
#include <iostream> #include <string> class Luokka { private: int luku; std::string nimi; public: Luokka() { luku = 20; nimi = "Juha"; } void funktio(Luokka& olio); }; int main() { Luokka eka; Luokka toka; eka.funktio(toka); return 0; } void Luokka::funktio(Luokka& olio) { std::cout << olio.luku << " " << olio.nimi << std::endl;; }
En tiedä meneekö jossain jotain muuta väärin, mutta kääntäjä (g++ 4.4.3) valittelee, että alifunktioissa "Ford was not decleared in this scope". Ford on siis olio. Pitäisi ehkä tehdä joku pienempi tiedosto jossa voisi vain kokeilla tuota olion lähetystä ja sitten jatkaa isomman kokonaisuuden kanssa..
E: Jep, teuron esimerkki pelaa, kiitosta :)
Niin siis tällainen ei tietenkään voi toimia.
#include <iostream> #include <string> class Luokka { private: int luku; std::string nimi; public: Luokka() { luku = 20; nimi = "Juha"; } void funktio(Luokka& olio); }; int main() { Luokka eka; Luokka Ford; eka.funktio(toka); return 0; } void Luokka::funktio(Luokka& olio) { std::cout << Ford.luku << " " << Ford.nimi << std::endl;; }
Niin. Äsken ei siis ollut vielä mitään hajua, miten tuo olio lähetetään, mutta nyt toimii. Kiitos kaikille!
Aihe on jo aika vanha, joten et voi enää vastata siihen.