首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对派生类进行值初始化?

如何对派生类进行值初始化?
EN

Stack Overflow用户
提问于 2016-10-27 04:25:51
回答 2查看 65关注 0票数 0

目前,我正在使用std::initializer_list<std::vector<double>>初始化我的矩阵类。

代码语言:javascript
运行
复制
class matrix{
public:
    matrix(std::initializer_list<std::vector<double>> list: row(list.size(),
                               col((*list.begin()).size()), matrix(list){}

private:
    std::vector<std::vector<double> matrix; // I am planning to use single contiguous memory in future
};

这允许我对初始化矩阵进行值化。

matrix mat = {{1,2,3},{4,5,6}};

现在我使用矩阵来创建向量(数学)。

代码语言:javascript
运行
复制
class Vector: public Matrix{
    Vector(std::initializer_list<double> list):Matrix(list){}
    // Vector(std::initializer_list<std::vector<double>> list):Matrix(list){}

};

我想为向量做的是

Vector vec = {1,2,3};

但由于我不能通过std::initializer_list<double>到基地,我被困住了

我不想要的Vector vec = {{1,2,3}};

有没有其他方法来处理这种情况(通过放弃initializer_list并使用完全不同的东西),或者我是否应该坚持使用initializer_list?

我认为intializer_list在运行时进行初始化,我从这里中读取它。有什么方法可以在编译时进行初始化吗?

EN

Stack Overflow用户

回答已采纳

发布于 2016-10-27 04:38:00

我修改了您的代码,这样它至少可以编译。希望它有帮助:

代码语言:javascript
运行
复制
class Matrix {
public:
    Matrix(std::initializer_list<vector<double>> _list):
            row(_list.size()),  col((*_list.begin()).size()), m_matrix(_list){}

private:
    size_t row, col;
    std::vector<std::vector<double>> m_matrix; // I am planning to use single contiguous memory in future
};

class MyVector: public Matrix{
public:
    MyVector(std::initializer_list<double> _list): Matrix({_list}) {}
};

另一方面,使用向量或列表作为可验证的名称并不好,因为这些是C++ STL中的容器名称。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40276098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档