Код: Выделить всё
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.
}
Я не хочу делать всю таблицу класс как шаблон класс только потому, что он только потому, что этой одной переменной. И я не хочу использовать какой -либо 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},
};
};
Подробнее здесь: https://stackoverflow.com/questions/794 ... t-mentioni
Мобильная версия