В Matlab вы можете инициализировать векторы следующим образом:
>> a = 3;
>> b = 4.6;
>> c = [2, 1.3, a, b]
c =
2.0000 1.3000 3.0000 4.6000
Я хотел бы использовать аналогичный синтаксис в C++. В частности, у меня есть собственный векторный класс Vec:
class Vec {
public:
unsigned N; //number of elements
double* e; //array of elements
Vec(unsigned); //constructor
~Vec(void); //destructor
Vec(const Vec&); //copy constructor
Vec& operator=(const Vec&); //copy assignment operator
};
И я хотел бы инициализировать его следующим образом:
Vec v;
int a = 3;
double b = 4.6;
v = {2, 1.3, a, b}; //a is converted from int to double
std::cout << "N = " << v.N << std::endl;
std::cout << "v = [" << v.e[0] << ", " << v.e[1] << ", "
<< v.e[2] << ", " << v.e[3] << "]" << std::endl;
Чтобы он печатал:
N = 4
v = [2, 1.3, 3, 4.6]
Это возможно? Если да, то как?
Аналогичный вопрос здесь, но ответ касается конструктора копирования, а не оператора присваивания копии.
std::initializer_list
. - person Some programmer dude   schedule 01.12.2014initializer_list
,std::vector
уже допускает этот синтаксис. Демо - person Cory Kramer   schedule 01.12.2014initializer_list
, но до сих пор не знаю, как это сделать. Я пробовалVec& operator=(const initializer_list<double>);
и кучу других вещей, и это не сработало. - person Wood   schedule 01.12.2014