devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻

Есть ли возможность в C++ объявить массив массивов из темплейтных классов с аргументами от 1 до N?

Есть примерно такой код:
template <size_t size>
class A {
  std::vector<B<1>> items1;
  std::vector<B<2>> items2;
  std::vector<B<3>> items3;
  // ... 
  std::vector<B<size>> itemsSize;
};
// ... 

template <size_t size>
class B {
  const size_t data[size];
};

Нужно в A объявить N массивов из B размером от 1 до size включительно. Есть ли возможность это сделать читабельно?

Зачем такие извращения? Я хочу, чтоб данные класса B лежали сплошным куском в памяти без векторов и вот этого всего.

Или может как-то можно это решить более изящно?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
@laphroaig
Ну как то так:

#include <iostream>

template <size_t size>
class B {
  const size_t data[size];
};


template<size_t size>
class A
  : public A<size-1>
{
    B<size> items[size];
};

template<>
class A<0>
{
};

int main()
{
   std::cout << sizeof(A<10>) << std::endl; 
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы