1
我想要的是通过大括号初始化程序列表生成5x5矩阵的可能性。 因此,它可能看起来更高,如:多维向量大括号初始化程序列表到多向量
enum class MyListType {
EMPTY,
A
};
auto matrix = {
{MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY},
{MyListType::A, MyListType::A, MyListType::A, MyListType::A, MyListType::A},
{MyListType::A, MyListType::A, MyListType::A, MyListType::A, MyListType::A},
{MyListType::A, MyListType::A, MyListType::A, MyListType::A, MyListType::A},
{MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY}
};
auto somthing = std::make_shared<Matrix5T>(matrix);
对于我现在我Matrix5T类,这在目前只为载体的工作原理:
class Matrix5T
{
public:
Matrix5T(std::initializer_list<MyListType> matrixIn)
: matrix(std::make_shared<std::vector<MyListType> >(matrixIn))
{}
virtual ~TileMatrix() = default;
private:
std::shared_ptr<std::vector<MyListType> > matrix;
}
因此,我可以做到以下几点:
auto matrix = {
MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY,
MyListType::A, MyListType::A, MyListType::A, MyListType::A, MyListType::A,
MyListType::A, MyListType::A, MyListType::A, MyListType::A, MyListType::A,
MyListType::A, MyListType::A, MyListType::A, MyListType::A, MyListType::A,
MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY, MyListType::EMPTY
};
auto somthing = std::make_shared<Matrix5T>(matrix);
目前,我没有找到解决方案,在我的 类中有一个多维向量,该类由多维括号包围的初始化程序列表初始化。
我试过例如以下,从而导致错误:
class Matrix5T
{
public:
Matrix5T(std::initializer_list<std::initializer_list<MyListType> > matrixIn)
: matrix(std::make_shared<std::vector<std::vector<MyListType> > >(matrixIn))
{}
virtual ~TileMatrix() = default;
private:
std::shared_ptr<std::vector<std::vector<MyListType> > > matrix;
}
错误是说,从初始化列表的多维矢量 转换不起作用:
no known conversion for argument 1 from ‘std::initializer_list<std::initializer_list<MyListType> >’ to ‘const std::vector<std::vector<MyListType> >&’
所以我怎样才能解决这个问题?