Dynamische Klasse
-
Hi, ist es möglich ne dynamische Klasse zu erstellen?
Angenommen ich habe sowas:
int main() { Human Marcus; Human Ronny; }
Dann hab ich ja das Problem, dass ich jeden Human manuell erstellen muss.
und wenn ich beispielsweise folgendes mache:
int main() { string myhuman; getline(cin,myhuman); Human myhuman; }
Spuckt er mir nen Fehler aus oder denkt gar, dass der neue Human dann myhuman heisst und nicht die Eingabe, bzw. der Inhalt von der Variable myhuman ist.
Technisch zu lösen?
MfG. tuKKelteQUila
-
Was möchtest Du denn mit deinen Menschchen machen?
greetz, Swordfish
-
Ist das relevant?
Geht ja nur darum eine interaktive Klasse zu erstellen, bei der ich einen Menschen beliebig benennen kann. Oder nen Array würde es auch tun, sodass ich diesen dann mit human[0] und human[1] ansprechen kann.
-
mach einfach:
Human x1, x2; x1.giveName("Markus"); x2.giveName("Sword");
mit nem array gehts genau so. Nur musst ein bissl gscheiter machen, zb:
Human List = new Human[250]; ..
-
Ah danke, nehme die Array-Methode.
-
Will nicht.
#include "stdafx.h" #include <iostream> using namespace std; class Human { private: int age; public: void setAge(int newAge) { age = newAge; } int getAge() { return age; } }; int main() { int humanCounter = 0, humans; cout<<"How many humans: "; cin>>humans; for(int o=0;o<humans;o++) { Human hArray = new Human[humanCounter]; humanCounter++; } system("cls"); for(int i=0;i<humanCounter;i++) { hArray[i].setAge(20); cout<<"hArray["<<i<<"]'s Age: "<<hArray[i].getAge()<<"\n"; } cin.get(); }
-
will jetzt nicht genau schaun, poste die ERRORS
-
Fehler 1 error C2440: 'Initialisierung': 'Human *' kann nicht in 'Human' konvertiert werden 20
Fehler 2 error C2065: 'hArray': nichtdeklarierter Bezeichner 27
Fehler 3 error C2228: Links von ".setAge" muss sich eine Klasse/Struktur/Union befinden. 27
Fehler 4 error C2228: Links von ".getAge" muss sich eine Klasse/Struktur/Union befinden. 28
-
unlimieD.paSe schrieb:
Fehler 1 error C2440: 'Initialisierung': 'Human *' kann nicht in 'Human' konvertiert werden 20
Fehler 2 error C2065: 'hArray': nichtdeklarierter Bezeichner 27Human *xxxx = new Human[500];
und das zweite... da musst hArray definieren bevor du es verwendest.
-
DER DA schrieb:
und das zweite... da musst hArray definieren bevor du es verwendest.
Ich habs doch definiert!
for(int o=0;o<humans;o++) { Human *hArray = new Human[humanCounter]; humanCounter++; }
Geht trotzdem nicht.
Erster Fehler ist aber behoben.
-
int main() { int humanCounter = 0, humans; Human hArray = new Human[500]; cout<<"How many humans: "; cin>>humans; system("cls"); for(int i=0;i<humanCounter;i++) { hArray[i].setAge(20); // HIER WAR der Fehler: Du benutzt das, obwohls nicht definiert ist. cout<<"hArray["<<i<<"]'s Age: "<<hArray[i].getAge()<<"\n"; } cin.get(); }
naja du kannst doch nicht jedesmal ein HUMAND Objekt definieren mit 0,1,2,3.. Elementen.
Du solltest dich auf eine Größe festlegen und diese auch benutzen. Natürlich kannst du auch später einen Wert zuweisen.
-
es ist noch immer falsch aber solltest halt mal schauen,dass du Objekte ganz am Anfang der main definierst und später benutzt.
-
PUSH ???