【问题标题】: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

标签: c++ arrays constructor


【解决方案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) {
     }
};

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多