Dynamiczne tworzenie obiektu klasy, a odwołanie się do niego.

0

Witajcie mam taką klasę:

class cOsoba
{

private:
	long long pesel = 95041812440;

public:  //Atrybuty
	string imie;
	string nazwisko;
	int wiek;




	//Metody
	void wypisz();

	//cOsoba();
	~cOsoba();
	cOsoba(string imie, string nazwisko, int wiek);




};

I podczas tworzenia dynamicznie jej obiektu, nie mogę się do niego odwołać, tzn. do jej metod?

int main()
{
	string imie, nazwisko;
	int wiek;

	cout << "Wprowadz imie: ";
	cin >> imie;

	cout << "Wprowadz nazwisko: ";
	cin >> nazwisko;

	cout << "Wprowadz wiek: ";
	cin >> wiek;

	cout << "\n";

	cOsoba *pStudent1;
	pStudent1 = new cOsoba(imie, nazwisko, wiek);
	//cOsoba student;// = { "Adam", "Kasperski", 24 };


	cOsoba student(imie, nazwisko, wiek);
	student.wypisz();


	_getch();
}

Jak tworzę statycznie obiekt tej klasy tj. student to jak widzicie, wywołanie metody

student.wypisz();

, a już jak dam:

pStudent1.wypisz();

to nie działa, dlaczego?

1

-> zamiast kropki.
http://stackoverflow.com/questions/2575048/arrow-operator-usage-in-c

Staraj się unikać dynamicznej alokacji i zamiast wskaźników, wszędzie gdzie się da używaj referencji. Tam gdzie nie jest to możliwe używaj inteligentnych wskaźników.

1

Jak masz wskaźnik, to musisz wyłuskać odpowiednio, np uzywając operatora ->
czyli albo:

pStudent1->wypisz();

albo

(*pStudent1).wypisz();
0

Co do wskaźników i referencji, z C++ the programming language pamiętam ogólne zalecenie:
Wskaźników używaj gdy musisz zmieniać ich adres, czyli to na co wskazują.
Jeżeli chcesz operować na dynamicznym obiekcie, używaj wtedy referencji.

Dzięki temu w prosty sposób zmienna++ da Ci albo przesunięcie albo inkrementacje zależnie od potrzeb.

1 użytkowników online, w tym zalogowanych: 0, gości: 1