通过构造函数请求数组初始化子类
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::array
或 std::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)
;
【讨论】:
以上是关于通过构造函数请求数组初始化子类的主要内容,如果未能解决你的问题,请参考以下文章