Wie es ist configset als Teil Ihrer Configuration
Klasse zugeordnet ist. Die Größe wird intern angepasst, so dass sie zu dem passt, was Sie wollen, aber es wird zerstört, wenn die Konfiguration zerstört wird. Sollte gut funktionieren, es sei denn, Sie brauchen wirklich einen Zeiger. Wenn dies für Sie funktioniert, ersetzen Sie einfach die Zuweisung durch Aufrufe an resize
, um es zu einer beliebigen Form zu machen (wie folgt: configset.resize(weeks, vector<dynamic_bitset>(groups, dynamic_bitset(players)))
). Dies sollte in den meisten Situationen gut funktionieren.
Wenn Sie es explizit zuweisen möchten, müssen Sie einen Zeiger speichern. Definieren Sie Configset wie folgt:
vector< vector<dynamic_bitset<> > > *configset;
Und die meisten Ihrer Code wird funktionieren. Stellen Sie sicher, dass Sie es im Destruktor löschen.
Ein noch besserer Ansatz ist es, eine unique_ptr (oder einen anderen Smart-Pointer) wie folgt zu verwenden:
unique_ptr<vector<vector<dynamic_bitset<>>>> configset;
....
configset.reset(new vector....);
Auf diese Weise dynamisch zugeordnet wird, und Sie können es als Zeiger behandeln, aber Sie werden nicht vergiss es zu löschen.
Sie müssen dies auch auf die internen Strukturen anwenden, wenn sie dynamisch durchgängig zugewiesen werden müssen. Das ist
vector<vector<dynamic_bitset<>*>*>* configset;
or
unique_ptr<vector<unique_ptr<vector<unique_ptr<dynamic_bitset<>>>>>> configset;
Schließlich Ihre Zuordnung schafft nur eine dynamic_bitset<>
und ein vector<dynamic_bitset<>>
und kopiert den Zeiger auf allen Standorten. Dies ist wahrscheinlich nicht das, was Sie wollen. Entweder die Zeiger (das ist nicht Java) oder eine Schleife, um es richtig zu initialisieren.
'configset' ist kein Zeiger, also sollte' new' nicht verwendet werden. – NathanOliver
auch nicht verwandt, aber machen Sie Ihren Konstruktor öffentlich. – fritzone
@NathanOliver Ja: D. Ich bin erst nach ein paar Jahren in ein C++ Projekt gewechselt. – Smarty77