Как изменить размер вектора структуры? - PullRequest
0 голосов
/ 18 января 2019

Я пытался изменить размер моего вектора структуры, но VS выдает ошибку

Error   C2512   1>c:\program files (x86)\microsoft visual 
studio\2017\enterprise\vc\tools\msvc\14.11.25503\include\xmemory0(856): 
error C2512: 'tabuRecord::tabuRecord': no appropriate default constructor 
available

Вот моя структура:

struct tabuRecord {
  int x;
  int y;
  int k;
  tabuRecord(int x1, int y1, int k1) { x = x1; y = y1; k = k1; }
};

Вот моя функция изменения размера:

void insertToTabu(vector<tabuRecord> &v, int sizeOfTabuList) {
  v.resize(sizeOfTabuList);
}

1 Ответ

0 голосов
/ 18 января 2019

Когда вы вызываете std::vector::resize(X), вы запрашиваете vector (по крайней мере, потенциально) для создания X объектов. Единственный способ, которым вектор может это сделать, - это построить их по умолчанию, потому что вы больше ничего не даете ему. А поскольку ваша структура не имеет конструктора по умолчанию, resize не может быть скомпилирован.

И на всякий случай ваша структура не имеет конструктора по умолчанию, потому что вы объявили конструктор пользователя.

...