Допустим, у меня есть класс T с конструктором T(int b) и дочерний Tchild с аналогичным конструктором Tchild(int b).
Как я могу использовать decltype с аргументом?
Например:
Давайте представим, что я не знаю следующие два типа:
T abc{};
Tchild def{};
std::vector<*T> vec;
vec.push_back(new decltype(Tchild));
Как я могу сделать new decltype с помощью этого конструктора -> Tchild(int b)?
Я новичок и мой вопрос может быть очень глупым. Я пытался найти ответ, но не смог, возможно, я задаю плохой вопрос.
Вы не можете использовать decltype для получения динамического дочернего класса данного T*.





Вы говорите, что у T и Tchild есть конструкторы, принимающие параметры int. Поэтому вам нужно передать для них значения int, например:
T abc{1};
Tchild def{2};
T abc{}; и Tchild def{}; не будут компилироваться, если эти классы также не определяют конструкторы по умолчанию, которые вы не описали.
В любом случае new decltype(Tchild) не имеет смысла, поскольку Tchild уже является типом, поэтому вы могли бы просто написать new Tchild. Вы, вероятно, имели в виду new decltype(def).
Но вам все равно придется указать значение int, если вы хотите, чтобы вызывался конструктор Tchild(int b), например:
vec.push_back(new decltype(def){3});
new decltype(Tchild)->new Tchild(integer_value_or_variable)