Objektnamen automatisch ändern

  • Themenstarter Themenstarter Dennis-20
  • Beginndatum Beginndatum
D

Dennis-20

Nabend an euch alle.
Habe letzte Woche die Programmiersprache C++ kennengelernt und stolper noch an manchen, hoffentlich einfachen ;-), Dingen.
Derzeit bin ich dabei mit Klassen zu arbeiten und möchte gerne Objekte im laufenden "Betrieb" anlegen. Das klappt eigentlich schon ganz gut, nur wenn ich mehr als 1 Objekt anlege hat das z.B. 2 Objekt ja den gleichen Namen. Das möchte ich irgentwie dynamisch gestalten, sprich den Objektnamen um einen hochzählen lassen.
Habe schon einige Versuche heute gestartet, nur leider klappt das nicht so wie ich es möchte.
Bitte um Hilfe :-)

Code:
#include "stdafx.h"
#include <new>
#include <iostream>
#include "windows.h"
#include <string>
#include <cstring>
#include <conio.h>
#include <cstdlib>

using namespace std;

class Person 
{
	private:
		char chNachname[20], chVorname[20], chStrasse[20], chOrt[20];
		int nHausnummer, nPostleitzahl;
	public:
		Person();
		~Person();
};

Person::Person()
{
	cout << "Konstruktor\n";
};

Person::~Person()
{
	cout << "Destruktor\n";
};

int _tmain(int argc, _TCHAR* argv[])
{
	int y = 1;
	char x;
	do
	{
		cout << "Objekt hinzufuegen \?\n1 = Ja\n2 = Nein\n-> ";
		x =  _getch();
		cout << x;
		if (x == '1')
		{
			// Hier muss etwas stehen, dass den Objektnamen (derzeit obj) einen hinaufzaehlt
			Person *obj = new Person;
			cout << "\nObjekt wurde hinzugefuegt.\n\n";
		}
		else if (x == '2')
			y = 0;
		else
			system("cls");
	}
	while(y != 0);
	return 0;
}
 
Huhu, also die Zeiger auf die Klasse Person werden in einem std Container abgelegt (vektor = dynamisches Array) um zu zeigen wie die Konstruktoren und Destruktoren aufgerufwen werden.

C++:
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>

using namespace std;

class Person
{
	private:
	    static int counter;
		char chNachname[20], chVorname[20], chStrasse[20], chOrt[20];
		int nHausnummer, nPostleitzahl;
	public:

		Person();
		~Person();
};
int Person::counter = 0;
Person::Person()
{
    ++counter;
	cout << "Konstruktor " << counter << "\n";
};

Person::~Person()
{
	cout << "Destruktor " << counter << "\n";
	--counter;
};

int main(int argc, char* argv[])
{
    Person* obj = NULL;
    vector<Person*> content;
	int y = 1;
	char x;
	do
	{
		cout << "Objekt hinzufuegen \?\n1 = Ja\n2 = Nein\n-> ";
		cin >> x;
		if (x == '1')
		{
			obj = new Person;
			content.push_back(obj);
			cout << "\nObjekt wurde hinzugefuegt.\n\n";
		}
		else if (x == '2')
        {
            for (size_t i = 0; i < content.size(); i++)
            {
                delete content[i];
            }
			y = 0;
        }
		else
			system("cls");
	}
	while(y != 0);
	return 0;
}
 
Vielen Dank für die Hilfe "Online-Skater", nur wie kann ich jetzt nach Auswahl diejenige Person bearbeiten bzw. mit Daten füttern? Wäre super wenn jemand eine Idee hat :-)

Code:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>

using namespace std;

void personbearbeiten (void);

class Person
{
	private:
		static int counter;
		char chNachname[20], chVorname[20], chStrasse[20], chOrt[20];
		int nHausnummer, nPostleitzahl;
	public:
		Person();
		~Person();
};

int Person::counter = 0;Person::Person()
{
	++counter;
	cout << "Konstruktor " << counter << "\n";
};

Person::~Person()
{
	cout << "Destruktor " << counter << "\n";
	--counter;
};

int _tmain(int argc, _TCHAR* argv[])
{
	Person* obj = NULL;
	vector<Person*> content;
	int y = 1, nPeranzges, nPerausw;
	char x;
	do
	{
		system("cls");
		cout << "Programm beenden \?\t0";
		cout << "\nPerson/en hinzufuegen \?\t1";
		cout << "\nPerson/en bearbeiten \?\t2";
		cout << "\nPerson/en anzeigen \?\t3";
		cout << "\nPerson/en loeschen \?\t4\n-> ";
		nPeranzges = content.size();
		cin >> x;
		if (x == '0')
			y = 0;
		else if (x == '1')
		{
			system("cls");
			obj = new Person;
			content.push_back(obj);
			cout << "Person wurde hinzugefuegt.\n";
			system("pause");
		}
		else if (x == '2')
		{
			personbearbeiten();
		}
		else
		{
			cout << "Falsche Eingabe!";
			system("pause");
		}
	}while(y != 0);
	system("pause");
	return 0;
}

void personbearbeiten (void)
{
	system("cls");
	int nPeranzges, nPerausw;
	nPeranzges = content.size();// Fehler 1 error C2065: 'content': nichtdeklarierter Bezeichner und
	// Fehler 2 error C2228: Links von ".size" muss sich eine Klasse/Struktur/Union befinden.
	cout << "Welche Person/en wollen Sie bearbeiten \?\n";
	cout << "Derzeit sind " << nPeranzges << " Personen angelegt.\n-> ";
	cin >> nPerausw;
	// Zugrif auf die Daten der ausgewaehlten Person
       // Vorname, Nachname, ... mit anschleßender Ausgabe zur Uebernahmekontrolle
	system("pause");
}
 
Zurück