Sigsegv developer
Вы правы, вот вариант на C++
struct ParserJsonImpl { int getData() { std::cout << "ParserJsonImpl::getData()\n"; return 0; } int getID() { std::cout << "ParserJsonImpl::getID()\n"; return 0; } }; struct ParserXmlImpl { int getData() { std::cout << "ParserXmlImpl::getData()\n"; return 0; } int getID() { std::cout << "ParserXmlImpl::getID()\n"; return 0; } }; using parser_t = std::variant<ParserJsonImpl, ParserXmlImpl>; std::pair<int, int> parseFile(parser_t parser) { auto visitor = [](auto parserImpl) { return std::make_pair(parserImpl.getData(), parserImpl.getID()); }; return std::visit(visitor, parser); }
Можно принимать тип-сумму в функции. В случае C++ std::variant<ParserJsonImpl, ParserXmlImpl>
std::variant<ParserJsonImpl, ParserXmlImpl>
Вы правы, вот вариант на C++
Можно принимать тип-сумму в функции. В случае C++
std::variant<ParserJsonImpl, ParserXmlImpl>