C++ klasa i funkcje

Awatar użytkownika
SławomirS
Użytkownik
Użytkownik
Posty: 33
Rejestracja: 9 lut 2008, o 17:05
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 6 razy
Pomógł: 1 raz

C++ klasa i funkcje

Post autor: SławomirS »

Powiedzcie mi gdzie jest błąd. Kompilator mówi że funkcja "ustaw" nie jest zadeklarowana ale przecież jest...

Program główny:

Kod: Zaznacz cały

#include <iostream.h>
#include "lab5.h"
#include <conio.h>
//********************************************************************************
LZ::LZ(int p_re, int p_im) {p_re=p_im=0;} //definicja konstruktora

//Definicja funkcji skladowej, ustawiajacej wartosci 

void LZ::ustaw (int p_re, int p_im) {
	re = p_re;
	im = p_im;
}

// Definicja funkcji skladowej, wypisujacej liczbe zespolona 
void LZ::wypisz () {
	cout << this->re << " j" << this->im << endl;
}
//**********************************************************************************
int main () {
    int p_re, p_im;
	LZ *a = new LZ(p_re, p_im); //dynamiczna deklaracja
    cout << "Podaj re:"; 	// Wczytanie parametrow liczby zespolonej 
	cin >> p_re;
	cout << "Podaj im:";
	cin >> p_im; 
	a.ustaw(p_re, p_im);	// ustawienie wartosc
	
	cout << "Liczba  zespolona a = ";
	a->wypisz();
getch();
}
lab5.h:

Kod: Zaznacz cały

#ifndef LAB5_H_
#define LAB5_H_

class LZ {			/* klasa liczb zespolonych */
public:
	LZ();			/* konstruktor domyslny */
	void ustaw(int, int);	/* publiczna funkcja skladowa ustawiajacej wartosci */
	void wypisz();		/* publiczna funkcja skladowa wypisujaca liczbe zespolona */
    LZ(int p_re, int p_im); /* drugi konstruktor */
private:
	int re;	//czesc rzeczywista
	int im;	//czesc urojona
};

#endif /*LAB5_H_*/
[/quote]
borysfan
Użytkownik
Użytkownik
Posty: 51
Rejestracja: 3 lis 2007, o 12:26
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 1 raz
Pomógł: 9 razy

C++ klasa i funkcje

Post autor: borysfan »

Błąd jest bardzo prosty. Przy wywołaniu funckji ustaw posługujesz sie wskaznikiem. Czyli do funkcji składowych nalezy odwoływac sie za pomoca "strzałeczki" czyli nalezy to zapisac
a->ustaw(p_re,p_im)
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C++ klasa i funkcje

Post autor: soku11 »

Zauwaz, ze masz zadeklarowany wskaznik na obiekt, tj:

Kod: Zaznacz cały

LZ *a;
Aby sie odwolac do elementow a zarazem metod tej klasy posluz sie poleceniem:

Kod: Zaznacz cały

a->ustaw(p_re, p_im);
I teraz powinno byc ok POZDRO
Awatar użytkownika
SławomirS
Użytkownik
Użytkownik
Posty: 33
Rejestracja: 9 lut 2008, o 17:05
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 6 razy
Pomógł: 1 raz

C++ klasa i funkcje

Post autor: SławomirS »

Już działa. Dzięki wielkie.
ODPOWIEDZ