В моем проекте есть Container
.
Обычно я создаю объект с помощью фигурных скобок, например: Container x{1,2,3}
.
Хорошо работает, используя std::initializer_list
под C ++ 11.
Однако, когда я перехожу в среду, которая не поддерживает C ++ 11, std::initializer_list
больше не может использоваться.
Могу ли я по-прежнему использовать фигурные скобки для создания объекта, когда я не используете initializer_list? Может быть, какую-то технику следует использовать? Я не уверен.
Спасибо за ваше время.
Приложение
Наивная реализация показана следующим образом (некоторая защита от копирования здесь не написана для простоты):
#include <iostream>
#include <initializer_list>
class Container
{
public:
explicit Container(std::initializer_list<double> initializer_list)
{
size = initializer_list.size();
data = new double[size];
int i = 0;
for (auto it = initializer_list.begin(); it != initializer_list.end(); ++it)
{
data[i] = *it;
i++;
}
}
~Container()
{
delete[] data;
}
void print()
{
std::cout << "--------------" << std::endl;
for (int i = 0; i < size; i++)
{
std::cout << "[" << i << "]" << data[i] << std::endl;
}
}
private:
int size;
double *data;
};
int main()
{
Container a{1, 2, 3, 4, 5};
a.print();
Container b{1, 2, 3};
b.print();
return 0;
}