vector in struct
-
Hallo,
was meckert hier mein Compiler?
#include <iostream> // für Klasse mensch #include "mensch.h" #include <vector> using namespace std; struct nachmittag { vector<mensch> m(4); // Zeile 9 vector<mensch> k(8); // Zeile 10 }; int main() { // an diesem Code, der hier steht ist nichts falsch // ... return 0; }Meldung:
1>c:\users\documents\visual studio 2005\projects\test\test\main.cpp(9) : error C2059: Syntaxfehler: 'Konstante' 1>c:\users\documents\visual studio 2005\projects\test\test\main.cpp(10) : error C2059: Syntaxfehler: 'Konstante'Dann definiert einen Vector doch so, oder?
vector<bla> bli(2);Mit der Anzahl in runden Klammern.
-
Du musst die Initialisierung im Konstruktor angeben, also so:
struct nachmittag { vector<mensch> m; vector<mensch> k; nachmittag() : m(4), k(8) { } };nachmittag()ist dabei der Standard-Konstruktor, der automatisch aufgerufen wird, wenn du eine Variable von dem Objekt anlegst. Wenn du keinen Standard-Konstruktor definierst, dann tut das der Compiler automatisch für dich und ruft darin die Standard-Konstruktoren aller im struct/class definierten Variablen auf.
Da du aber einen speziellen Konstruktor für m und k aufrufen willst, veränderst du das Verhalten des Standard-Konstruktors; wenn ein Objekt von "nachmittag" jetzt erstellt wird, wird der Konstruktor von vector aufgerufen, der die Größe festlegt