Отвечая на заключительный вопрос, «как мне преобразовать тип в тип 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);