//Using g++ and ubuntu.
#include <vector>
using namespace std;
Определение класса:C++ векторов классов с конструкторами
class foo(){
(...)
foo(int arg1, double arg2);
}
Constructor:
foo::foo(int arg1, double arg2){
(...) //arrays whose length depend upon arg1 and arg2
}
Я хотел бы сделать что-то вроде этого:
vector<foo> bar(10); //error: no matching function for call to 'foo::foo()'
bar[0] = new foo(123, 4.56);
(...)
Альтернатива метод (который мне меньше нравится) - использовать push_back:
vector<foo> bar; //works
bar.push_back(new foo(123, 4.56)); //throws similar error.
//Omitting the "new" compiles but throws a "double free or corruption (fasttop)" on runtime.
Я хочу, чтобы разные элементы вектора были построены по-разному, поэтому я не хочу использовать «конструктор повторяющихся последовательностей». Что делать?
+1 за очень хороший ответ. Если бы я мог, я хотел бы дать дополнительный +1, не говоря о том, что вы всегда должны использовать std :: vector, но что вы всегда должны использовать вектор. – Simon