Можно ли создать переменную элемента класса шаблона типа без упоминания параметра шаблона? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Можно ли создать переменную элемента класса шаблона типа без упоминания параметра шаблона? [закрыто]

Сообщение Anonymous »

Здесь у меня есть класс шаблонов под названием Header

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

using COLUMN_WIDTH = int;
using TITLE = std::string;

template
concept StringView = std::is_same_v;

template
class Header
{
public:
Header(const std::array& iHeaderList);
size_t getSize();
TITLE getTitle(int iIndex);
COLUMN_WIDTH getColumnWidth(int iIndex);
private:
std::array mHeader;
};
< /code>
Я хотел использовать это в переменной -члене другого класса, < /p>
class Table
{
public:
Table();
private:
Header mHeader; //Here I cannot specify `Header` without template parameters.
}
Здесь я не могу указать adherer элементная переменная без указания параметров шаблона. Первый параметр шаблона всегда std :: string_view , я могу упомянуть об этом, но я не знаю size здесь. Он должен быть передан классом, используя эту таблицу .
Я не хочу делать всю таблицу класс как шаблон класс только потому, что он только потому, что этой одной переменной. И я не хочу использовать какой -либо std :: variant , std :: Необязательно && std :: any . Но я не могу думать ни о каком другом решении. Разве это действительно невозможно иметь обойти это? Почему я не использую std :: vector вместо std :: array ? - Потому что std :: array может быть contexpr , тогда как std :: ecector не может быть. Но если мы передаем std :: array для этого нужен размер также для указания. > классы. Студент класс может иметь заголовки, такие как имя, ID, Marks Whare As Wement Class может иметь имя, отделение, степень, университет . Я упомяну эти заголовки как contexpr std :: array в соответствующих классах.
[*] Я не хочу, чтобы каждый класс несет ответственность за создание таблицы. Я передам заголовки и body значения в таблицу класс и таблица класс должен нести ответственность за создание таблицы UI.

< li> Я не хочу создавать здесь наследование, имея родительский класс для заголовка , просто чтобы избежать накладных расходов во время выполнения.

проблема, которую я пытаюсь Чтобы решить: < /strong>
Я знаю заголовки разных сущностей во время компиляции. Я храню эти заголовки как Contexpr std :: array в каждом классе. И я буду знать значения таблицы во время выполнения. Мне нужно будет передать этот заголовок и table Data To Table класс, чтобы таблица Class создала соответствующий пользовательский интерфейс.
пример

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

class student{
constexpr std::array mHeader=
{
{"Name", 150},
{"id", 100}
};
};
class teacher{
constexpr std::array mHeader=
{
{"Name", 150},
{"Degree", 100},
{"University", 100},
};
};

Здесь мне нужно будет передать mheader переменная каждого класса в заголовок конструктор и создать объект Header . Затем мне нужно будет передать этот заголовок и соответствующие значения таблицы в таблицу класс, и он создаст таблицу ui.

Подробнее здесь: https://stackoverflow.com/questions/794 ... t-mentioni
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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