Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Structur mit Array ??!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.04.2006, 14:24 Uhr
Tim01



Hallo,

ich habe folgendes Problem. Ich möchte eine Struktur mit einer gewissen Anzahl von Daten füllen, was für eine festen Wert z.B. 2 auch funktionert. Jetzt möchte ich aber selber bestimmen wie viele Daten eingelesen werden sollen mit *Anzahl_Mitarbeiter wobei ich immer folgende Fehlermeldung bekomme

error C2057: Konstanter Ausdruck erwartet
error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich
error C2133: 'Team' : Unbekannte Groesse

Bin für jede Hilfe dankbar!

struct Mitarbeiter
{
string Name;
string Vorname;
string Alter;
};

void main()
{
Mitarbeiter Team[*Anzahl_Mitarbeiter];

for(int i=0;i<2;i++)
{
cout << "\nDaten fuer den " << i+1 << ". Mitarbeiter eingeben\n";
cout << "Name: ";
cin >> Team[i].Name;
cout << "Vorname: ";
cin >> Team[i].Vorname;
cout << "Alter: ";
cin >> Team[i].Alter;
cout << "\n";
}
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.04.2006, 14:36 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo, wie ist Anzahl_Mitarbeiter den definiert?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.04.2006, 14:45 Uhr
Tim01



Huch, hab ich übersehen. Hier die Definition

int *Anzahl_Mitarbeiter = new int;

cout << "Anzahl Mitarbeiter eingeben: ";
cin >> *Anzahl_Mitarbeiter;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.04.2006, 15:01 Uhr
tobZel



Du kannst keine dynamisch großen arrays erstellen (zumindest nicht so)
Du kannst als größe nur einen Konstanten Wert angeben.
Wenn du jedoch die größe der Variable erst zur Laufzeit weißt dann musst du das array allozieren!
Ich hab es mal für dich etwas umgeformt(hoffe du wolltest es so haben):

C++:
#include <iostream>
#include <string>
using namespace std;


struct Mitarbeiter
{
private:
    string Name;
    string Vorname;
    string Alter;
public:
    void setAlter(string newAlter) { Alter=newAlter; }
    void setName(string newName) { Name=newName; }
    void setVorname(string newVorname) { Vorname=newVorname; }
};

int main()
{
    int *Anzahl_Mitarbeiter = new int;
    cout << "Anzahl Mitarbeiter eingeben: ";
    cin >> *Anzahl_Mitarbeiter;
    Mitarbeiter *Team= new Mitarbeiter[*Anzahl_Mitarbeiter];
    for(int i=0;i<*Anzahl_Mitarbeiter;i++)
    {
        string Temp;
        cout << "\nDaten fuer den " << i+1 << ". Mitarbeiter eingeben\n";
        cout << "Name: ";
        getline(cin, Temp);
        Team[i].setName(Temp);
        cout << "Vorname: ";
        getline(cin, Temp);
        Team[i].setVorname(Temp);
        cout << "Alter: ";
        getline(cin, Temp);
        Team[i].setAlter(Temp);
    }
    delete [] Team;
    delete Anzahl_Mitarbeiter;
    return 0;

}


Nachtrag:
So jetzt sind die Memory Leaks beseitigt!
--
Wer länger lebt stirb früher...

Dieser Post wurde am 17.04.2006 um 16:00 Uhr von tobZel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.04.2006, 15:05 Uhr
Tim01



WoW, ja funktionieren tut es nun.
Jetzt muss ich mir das mal anschauen und verstehen :-)

Danke für die Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.04.2006, 15:24 Uhr
Oliver
S2-Pixelgeneral


Was soll das?


C++:
int *Anzahl_Mitarbeiter = new int;



Das obige Programm erzeugt 2 Memory Leaks.


C++:
int main()
{
    int Anzahl_Mitarbeiter; // wieso dynamisch allokieren?
    cout << "Anzahl Mitarbeiter eingeben: ";
    cin >> Anzahl_Mitarbeiter;
    Mitarbeiter *Team= new Mitarbeiter[Anzahl_Mitarbeiter];
    for(int i=0;i<Anzahl_Mitarbeiter;i++)
    {
        string Temp;
        cout << "\nDaten fuer den " << i+1 << ". Mitarbeiter eingeben\n";
        cout << "Name: ";
        getline(cin, Temp);
        Team[i].setName(Temp);
        cout << "Vorname: ";
        getline(cin, Temp);
        Team[i].setVorname(Temp);
        cout << "Alter: ";
        getline(cin, Temp);
        Team[i].setAlter(Temp);
    }

    delete [] Team; // Nicht vergessen!
    return 0;
}


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 17.04.2006 um 15:24 Uhr von Oliver editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.04.2006, 15:30 Uhr
tobZel



die idee mit dem int allozieren kam ja net von mir ich dachte vielleicht hat ers mit absicht gemacht also hab ichs einfach gelassen
--
Wer länger lebt stirb früher...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.04.2006, 15:50 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Mit einem aktuellen Compiler ist auch folgendes möglich:

C++:
int i;
cin>>i;
Mitarbeiter Team[i];



allerdings finde ich das nicht besonder schön.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: