Инициализируйте каждый элемент std::array по ссылке на другой std::array.C++

Программы на C++. Форум разработчиков
Anonymous
 Инициализируйте каждый элемент std::array по ссылке на другой std::array.

Сообщение Anonymous »

У меня есть класс A:

Код: Выделить всё

class A {

};
и еще один класс B:

Код: Выделить всё

class B {
public:
explicit B(A &a) : aRef(a) {}
private:
A &aRef;
};
Сначала я инициализирую массив A:

Код: Выделить всё

std::array As{};
Теперь я хочу инициализировать массив B, каждый элемент которого инициализируется элементом A:

Код: Выделить всё

std::array Bs{B{As[0]}, B{As[1]}};
Это работает. Но по мере увеличения размера массива читаемость снижается, и мне приходится использовать другой скрипт для печати кода. Есть ли более элегантный способ сделать это?
Объявите Bs как массив std::unique_ptr. Однако мне нужен массив B напрямую. Я думаю, что сочетание шаблонов и std::index_sequence может быть правильным направлением.

Подробнее здесь: https://stackoverflow.com/questions/790 ... r-stdarray

Вернуться в «C++»