klasse und string
-
#include <iostream.h> #include <string.h> class idv { public: string test; };
muss man irgendwas beachten wenn man eine string-variable in einer klasse anlegt, oder warum macht de rmir immer nen fehler?
-
die header heißen
#include <iostream> #include <string> //ohne .h! class idv { public: std::string; //dafür mit expliziter angabe des namensraums };
denn string.h gibt es zwar (noch), ist aber gleichwertig mit der string.h für die C-Stringoperationen (strlen, strcpy, etc.) - die heißt übrigens auch nicht mehr string.h sondern cstring.
-
danke, jetzt noch eines, kann ich während der laufzeit mehrere objekte der klasse idv
bsp:
for(i=0;i<10;i++) { idv test[i]; }
weiß zwra das des so nicht geht, woltle nur wissen wie man des machen kann
-
Das wird dir so nichts bringen, selbst wenn i eine Konstante wär und das Array mit i Elementen erzeugt würde, würde es bis zur nächsten i-Abbarbeitung(bzw. verlassen des for-blocks sofort wieder zerstört.
Falls du die Klassen zur Laufzeit erstellen musst, benutz "new" und deklariere die Pointer ausserhalb des for-Blocks.
-
die sache ist diese in einer forschleife bekomme ich je nach aufruf imme runterschiedlich viele objekte und ich weiß nciht wie ich die dynamisch erstellen kann. Kann mir da wer nen beispiel geben, wie man da sit zeigern löst?
-
idv* a_pIDV[10]; //Array mit 10 Pointern for(int i=0;i<10;i++) { a_pIDV[i] = new(idv); }
-
und was amch ich wnen ich vorhe rnicht wieß ob ich nun 10...100... oder 1000 objekte brauche, im endeffekt weiß ich erst wie viele objekte ich habe wnen die schleife beendet ist
-
Dann nimmst du while statt for .
-
was bringt das den wenn die zeiger worher schon auf 10 limititiert sind und ich vor der schleife nciht wieß wie viele es letztendlich werden
-
Hallo,
hier ein Beispiel für das Anlegen variabler Felder. Das intFeld muss dann gegen ein Objektfeld ausgetauscht werden .
#include "stdafx.h" #include <iostream> #include <string> #include <iomanip> using namespace std; int main() { int zaehler=0,step=10,groesse=9,zahl=0,i=0,*p2; char ein='w'; //Zeiger auf Feld setzen int *p=new int [10]; // Feld mit 10 Elementen anlegen (0-9) while(ein=='w') { cout<<"Bitte geben Sie eine Integer Zahl ein"; cin>>zahl; cout<<endl; if(groesse<=zaehler) { // Feld vergroessern p2=new int[groesse+step]; // Neues Feld anlegen p2 Zeigt darauf for(i=0;i<=zaehler;i++) // Altes Feld in neues Feld kopieren *(p2+i)=*(p+i); delete [] p; // altes Feld loeschen groesse+=step; // Variable anpassen p=p2; //Zeiger von altem Feld auf neues Feld umsetzen } *(p+zaehler)=zahl; // Zahl in Feld schreiben zaehler++; // Zaehler zaehlt mit //cout<<"Weitere Zahl eingeben = w"; //Abbruchbedingung fuer while schleife //fflush(stdin); //cin>>ein; cout<<"Das Feld ist "<<groesse<<" gross, der Step ist "<<step<<" es wurden "<<zaehler<<" Werte eingegeben"<<endl; for(i=0;i<=groesse;i++)cout<<" "<<*(p+i); // Ausgabe cout<<endl; } return 42; }
Schöne Grüsse
-
std::vector aus <vector> ist hier wohl der Königsweg -> Lieblingsbuch/Doku.