Отвечая на заключительный вопрос, «как мне преобразовать тип в тип Test::A», вместо того, чтобы жестко отнестись к требованию иметь там актерский состав и ответить на несколько лет позже, просто это кажется популярным вопросом, который, кажется, еще никто не упомянул об альтернативе. согласно стандарту C ++ 11:
5.2.9 Статическое приведение
... выражение eможет быть явно преобразовано в тип, T
используя static_castформу, static_cast<T>(e)если объявление
T t(e);правильно сформировано, для некоторой изобретенной временной переменной t(8.5). Эффект такого явного преобразования такой же, как выполнение объявления и инициализации, а затем использование временной переменной в качестве результата преобразования.
Поэтому прямое использование формы t(e)также будет работать, и вы можете предпочесть ее для аккуратности:
auto result = Test(a);