Допустим, у меня есть класс 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)