Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ Olion lähettäminen parametrina

Sivun loppuun

vesikuusi [24.03.2011 16:17:56]

#

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 :)

ankzilla [24.03.2011 16:20:21]

#

void Luokka::jotain(Luokka Olio);

vesikuusi [24.03.2011 16:23:02]

#

tuota oon jo kokeillut mutta kokeillaan uudestaan...

Torgo [24.03.2011 16:24:11]

#

Ei mitään. Jäsenfunktiolla on tiedossa oma olionsa ilman erillistä parametria.

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=cpp_ohj_09#yksinkertaisetluokat

Teuro [24.03.2011 16:25:10]

#

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;;
}

vesikuusi [24.03.2011 16:37:30]

#

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 :)

Teuro [24.03.2011 16:46:27]

#

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;;
}

vesikuusi [24.03.2011 17:10:02]

#

Niin. Äsken ei siis ollut vielä mitään hajua, miten tuo olio lähetetään, mutta nyt toimii. Kiitos kaikille!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta