C++ では、実行時に決定されるサイズの配列をスタック上に置くことはできません。ここでは、std::vector を使用してそれを行います。
int N = 10;
std::vector<Object> obj(N);
// non-default ctor: std::vector<Object> obj(N, Object(a1, a2));
// now they are all initialized and ready to be used
コンパイル時にサイズがわかっている場合は、単純な配列をそのまま使用できます。
int const N = 10;
Object obj[N];
// non-default ctor: Object obj[N] =
// { Object(a1, a2), Object(a2, a3), ... (up to N times) };
// now they are all initialized and ready to be used
ブーストの使用が許可されている場合は、コンテナーのように反復子を提供し、.size() を使用してそのサイズを取得できるため、boost::array を使用することをお勧めします。
int const N = 10;
boost::array<Object, N> obj;
// non-default ctor: boost::array<Object, N> obj =
// { { Object(a1, a2), Object(a2, a3), ... (up to N times) } };
// now they are all initialized and ready to be used