通过构造函数请求数组初始化子类

Posted

技术标签:

【中文标题】通过构造函数请求数组初始化子类【英文标题】:Initalize a child class via constructor requesting an array 【发布时间】:2019-04-09 12:36:18 【问题描述】:

我喜欢创建基类的子类,但不知何故我无法传递匿名堆栈数组。

基类构造函数:

Shape::Shape(int origin[2], unsigned int vectorAmount, int vectors[][2]) 
    : origin origin , VECTOR_AMOUNT vectorAmount , vectors vectors  

子类构造函数:

I::I(int origin[]) : Shape(origin, 3,  0,1,0,-1 ) 

我该怎么办?感谢您的回答。

【问题讨论】:

你可以使用std::vector<std::vector<int>> 数组不可复制。如果您想将数组传递给您的类,请使用 std::arraystd::vector 【参考方案1】:

用类似 STL 的容器替换你的 C 风格成员,它会让你的生活更轻松:

using Matrix = std::vector<std::vector<int>>;
using Origin = std::array<int,2>;

class Shape 
public:
    explicit Shape(const Origin& origin, const Matrix& vectors = Matrix()) :
        origin(origin), vectors(vectors) 

private:
    Origin origin;
    Matrix vectors;
;

class I : public Shape 
public:
     explicit I(const Origin& origin) : 
         Shape(origin) 
     
;

【讨论】:

以上是关于通过构造函数请求数组初始化子类的主要内容,如果未能解决你的问题,请参考以下文章

java子类可以继承父类的构造方法吗

如何通过可变参数模板将多个构造函数参数转发到数组初始值设定项列表?

在构造函数中将数组初始化为0 [重复]

java类中构造函数中:数组怎样初始化

范例:继承的应用:

函数调用或构造函数调用中的 C++ 数组初始化