Векторы C++ классов с конструкторами

//Using g++ and ubuntu.
#include <vector>
using namespace std;

Определите класс:

class foo(){
(...)
foo(int arg1, double arg2);
}

Конструктор:

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.

Я хочу, чтобы различные элементы вектора были созданы по-другому, таким образом, я не хочу использовать "Повторяющегося конструктора последовательности". Что должно быть сделано?

5
задан Kevin Kostlan 9 August 2010 в 02:34
поделиться