Инициализировать дочерний класс с помощью конструктора, запрашивающего массив - PullRequest
0 голосов
/ 09 апреля 2019

Мне нравится создавать дочерний класс базового класса, но почему-то я не могу передать массив анонимного стека.

Конструктор базового класса:

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 голосов
/ 09 апреля 2019

Замените ваши элементы в стиле C на STL-подобные контейнеры, это сделает вашу жизнь намного проще:

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) {
     }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...