Inicjowanie obiektów C++


(Bolkowice10) #1

Witam. Z obiektowym dopiero zaczynam i mam następujący problem:

Otóż stworzyłem klase (nie będę pisal calości bo troche tego jest także skrótowo)

class Matematyka

public:

void zerowe();

...

....

....

};

//koniec klasy i teraz robie te funkcje w vioud zerowe();

void Matematyka::zerowe()

{

tu coś tam

}

i tu zaczyna sie main

tutaj wiadomo jakies menu i teraz chce wywołać powiedzmy tą funkcje zerowe().

i mi wywala błąd: error C3861: 'zerowe': identifier not found

gdyie robie blad?


(Sawyer47) #2

A w jaki sposób wywołujesz? Rozwijając nieco twój kod:

#include 


class Matematyka

{

 public:

	void zerowe();

};


void Matematyka::zerowe()

{

	std::cout << "Matematyka::zerowe()\n";

}



int main()

{

	Matematyka o1;

	o1.zerowe();


	Matematyka *ob2 = new Matematyka();

	ob2->zerowe();

	delete ob2;


	return 0;

}

Porównaj ze swoim kodem.


(Bolkowice10) #3

achaaa.... no tak! dzieki!


(DanKar) #4

Rozwijając wypowiedź nr47 , przytoczona przez Ciebie funkcja jest niestatyczną funkcją składową tej klasy, a co za tym idzie taką funkcję wywołujemy dla konkretnego obiektu danej klasy - co na przykładzie zilustrowano powyżej. Chcąc aby funkcja nie była wywoływana na rzecz danego obiektu musiałbyś uczynić ją statyczną lub zadeklarować jako zaprzyjaźnioną z klasą, do której składników (prywatnych) ma mieć dostęp.