Как это конфигурация назначается как часть вашего класса Configuration
. Он изменит размер внутри, чтобы соответствовать желаемому, но будет уничтожен при уничтожении конфигурации. Должно работать нормально, если вам действительно не нужен указатель. Если это сработает для вас, просто замените выделение на звонки на resize
, чтобы сделать его любой необходимой вам формой (например: configset.resize(weeks, vector<dynamic_bitset>(groups, dynamic_bitset(players)))
). В большинстве случаев это должно работать нормально.
Если вы хотите выделить его явно, вам нужно сохранить указатель. Определите конфигурацию следующим образом:
vector< vector<dynamic_bitset<> > > *configset;
И большая часть вашего кода будет работать. Убедитесь, что вы удалите его в деструкторе.
Еще лучше подход заключается в использовании unique_ptr (или какой-либо другой смарт-указатель), как это:
unique_ptr<vector<vector<dynamic_bitset<>>>> configset;
....
configset.reset(new vector....);
Таким образом, он выделяется динамически, и вы можете рассматривать его как указатель, но вы не будете забудьте удалить его.
Вам также необходимо применить это к внутренним структурам, если вам нужно, чтобы они были динамически распределены до конца. Это
vector<vector<dynamic_bitset<>*>*>* configset;
or
unique_ptr<vector<unique_ptr<vector<unique_ptr<dynamic_bitset<>>>>>> configset;
Наконец ваше выделение только создает один dynamic_bitset<>
и один vector<dynamic_bitset<>>
и копирует указатель на все места. Это, вероятно, не то, что вы хотите. Либо снимите указатели (это не java), либо запустите цикл для его правильной инициализации.
'configset' не является указателем, поэтому не следует использовать' new'. – NathanOliver
также не связаны, но сделайте свой конструктор общедоступным. – fritzone
@NathanOliver Да: D. Просто переключился на проект C++ через несколько лет. – Smarty77