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 🙂


Anmelden zum Antworten