S
JUHUH !!! So ich glaub es geht jetzt. Hab doch n paar Fehler gefunden und hab das so wie ichs mir gedacht hab ganz ohne Referenzen, sondern nur mit Zeigern gemacht. Hier wär dann mal der Code, vll. interessierts ja jemand, meiner Meinung nach funktionierts, würd mich aber über Verbeserungsvorschläge etc... freuen!
#include <iostream>
using namespace std;
class Mitarbeiter
{
public:
Mitarbeiter();
~Mitarbeiter();
void SetGehalt(int a) {Gehalt=a;}
void SetAlter(int a) {Alter=a;}
void SetName(string a) {Name=a;}
int GetGehalt(){return Gehalt;}
int GetAlter() {return Alter;}
string GetName() {return Name;}
private:
int Gehalt;
int Alter;
string Name;
};
void FromArrayToNewArray(Mitarbeiter **Firma,int OldArrayEnd,int NewArrayEnd);
Mitarbeiter::Mitarbeiter()
{
}
Mitarbeiter::~Mitarbeiter()
{
}
int main()
{
int BenEing1;
int BenEing2;
cout << "Wieviele Mitarbeiter sollen Angestellt werden?\n";
cin >> BenEing1;
Mitarbeiter *Firma=new Mitarbeiter[BenEing1];
for (int i=0;i<BenEing1;i++)
{
Firma[i].SetGehalt(i+(i*80)+200);
}
cout << "Wieviele neue Mitarbeiter?\n";
cin >> BenEing2;
FromArrayToNewArray(&Firma,BenEing1,BenEing2);
//#TEST# (Testen obs geklappt hat)
for (int i=0;i<BenEing1;i++)
{
cout << Firma[i].GetGehalt() << endl;
}
return 0;
}
void FromArrayToNewArray(Mitarbeiter **ArrayTemp,int OldArrayEnd,int NewArrayEnd) //hier war der Funktionsparameter
//(der vorher "*Firma" hieß) falsch, da ich so nicht den Zeiger Firma aus Zeile
//39 angesprochen habe, sondern nur immer die Adress des ersten Elements.
{
Mitarbeiter *temp=new Mitarbeiter[OldArrayEnd];
for (int i=0;i<OldArrayEnd;i++)
{
temp[i]=(*ArrayTemp)[i];
}
delete []*ArrayTemp; //EDIT: äh ich glaub das muss doch [](*ArrayTemp) heißen? (siehe diesen Beitrag bei dem ich das gefragt
//habe: http://www.c-plusplus.net/forum/viewtopic-var-t-is-172525.html )
*ArrayTemp=NULL;
*ArrayTemp=new Mitarbeiter[OldArrayEnd+NewArrayEnd]; // hier warn Fehler da BinEing2 (Zeile 46) nur angibt um wieviel
// größer das Array werden soll.
for (int i=0;i<OldArrayEnd;i++)
{
(*ArrayTemp)[i]=temp[i];
}
delete []temp;
}
@CStoll ja okay es ist sicherlich einfacher "std::vector" zu nehmen, war aber jetzt halt eher so nä kleine "Herausforderung" an mich, das zu schreiben. Und man freut sich danach richtig wenns endlich funktioniert (also äh müsst jetzt glaub schon gehen).
Und ich hab auch wieder einiges gelernt dabei!
Dankeschön schon mal im Voraus.