1) may be u should to use std::vector or std::string?
2) чем не устраивает new?
class Foo {
private:
char *bar;
public:
Foo(const int size) { bar = new char[size]; } /* по хорошему тут ещё и эксепшн ловить стоит */
~Foo(void) { delete[] bar; }
/* other stuff */
};
Икскюз МИ!!! Отвлёкся. Да, желательно бы красиво. Если подробнее, то в этом "массиве" могут лежать элементы произвольного типа, но из встроенных (int, float и др.). Чем короче инициализация будет - тем лучше. Смотрел stl, многое не понял, если можно, расскажите подробнее.
по инициализации, я не могу придумать ничего лучше какого нибудь макроса с переменным числом аргументов, который будет раскрываться в правильную инициализацию.
например:
INIT_VEC(my_vec_t, vec, 2, 5, 10, 50);
будет раскрываться в что-то типа:
my_vec_t vec = MY_VEC_NULL, 2, 5, 10, 50;
где MY_VEC_NULL предопределенная константа некого типа (my_vec_t либо связанного с ним) и для него переопределен оператор запятая, который добавляет элементы по одному.
я имел в виду что в ссылке про blitz++ выше используется присваивание. Это легче, потому что можно переопределить оператор = и запятую и писать так: vec = 3, 5, 10, 30;
> Если подробнее, то в этом "массиве" могут лежать элементы произвольного типа, но из встроенных (int, float и др.). Чем короче инициализация будет - тем лучше.
А может, это, ellipsis заюзать?
В принципе, можно ещё и макрос написать, чтоб он сначала через перегрузку запятой (если есть такое) аргументы считал, а потом подавал их как varargs.