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

时间:2019-04-09 12:36:18

标签: c++ arrays constructor

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

基类构造函数:

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} }) {
}

我该如何处理?感谢您的回答。

1 个答案:

答案 0 :(得分:0)

通过类似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) {
     }
};