有两种方法,一是使用参数为std::initializer_list的构造函数和/或赋值运算符,二是这个类满足 aggregate class 的条件。
方法一
使用参数为std::initializer_list的构造函数和/或赋值运算符,任意类都可以使用这个方法。例如:
#include
#include
// 没有考虑各种边界问题,仅为示意
class myMatrix {
public:
myMatrix(int r, int c)
: row(r), col(c) { pData = new double[row * col]; }
myMatrix(int r, int c, std::initializer_list il)
: myMatrix(r, c) { *this = il; }
~myMatrix() { delete[] pData; }
// Other four copy-control members are omitted here.
myMatrix &operator=(std::initializer_list il) {
std::size_t pos = 0;
for (const auto &e : il)
pData[pos++] = e;
return *this;
}
double get(int r, int c) const { return pData[r * col + c]; }
private:
int row;
int col;