Size: a a a

2020 August 09

AS

Anatoly Shirokov in pro.cxx
d7d1cd
Народ, возможно ли в С++ написать код, в котором метод класса вызывается по его имени, если имя метода хранится в строке?
std::map<std::string, std::function<std::any (std::vector<std::any> const&)>> methods;
источник

I

Izirayd in pro.cxx
Если речь идёт о том, что мы должны вызвать функцию, по строке, при этом мы не можем явно обратиться к функции, то есть получить её адрес, на любом другом этапе работы программы, то это невозможно, но есть пару нюансов. Если функция валяется где-то в dll и она импортируется, то мы можем получить её адрес, далее вызвать, но и тут ряд проблем, мы не знаем количество аргументов, их типы, динамически идеально не выйдет сделать
источник

I

Izirayd in pro.cxx
Если же мы пойдем по ветке, что на этапе инициализаций, мы можем получить адрес метода, то мы можем забиндить его в контейнер функций, относительно строки и уже вызывать по строке
источник

W

Wild_Wind in pro.cxx
fulcanelly
ты плюсы с котлином смешал
И что?
Мне такая наркомания нравится.
источник

IZ

Ilia Zviagin in pro.cxx
d7d1cd
Народ, возможно ли в С++ написать код, в котором метод класса вызывается по его имени, если имя метода хранится в строке?
Нет, невозможно.
Можно сделать таблицу возможных для вызова методов, дать каждому методу имя в этой таблице, и по этому имени искать и вызывать метод
источник

IZ

Ilia Zviagin in pro.cxx
Konstantin Osipov
Копать нужно в сторону C++ reflection
Которой нет
источник

IZ

Ilia Zviagin in pro.cxx
d7d1cd
Я не решаю конкретную задачу. У меня есть знакомый Делфи разработчик. Он говорит, что в С++ нет RTTI. Я говорю ты не прав, RTTI есть. Он говорит, что если есть то попробуй написать на С++ код, в котором метод класса вызывается по имени из строки. Конечно, это к RTTI не имеет отношения, но вопросом я озадачился. Он говорит, что в Делфи такая задача делается в две строки.
Именно, к RTTI это не имеет отношения
источник

АР

Андрей Руссков... in pro.cxx
d7d1cd
Я не решаю конкретную задачу. У меня есть знакомый Делфи разработчик. Он говорит, что в С++ нет RTTI. Я говорю ты не прав, RTTI есть. Он говорит, что если есть то попробуй написать на С++ код, в котором метод класса вызывается по имени из строки. Конечно, это к RTTI не имеет отношения, но вопросом я озадачился. Он говорит, что в Делфи такая задача делается в две строки.
ну а ты придумай ему задачу которая на дельфи не решается. Например, написание поддерживаемого кода
источник

CD

Constantine Drozdov in pro.cxx
Андрей Руссков
ну а ты придумай ему задачу которая на дельфи не решается. Например, написание поддерживаемого кода
там все в целом норм
источник

CD

Constantine Drozdov in pro.cxx
просто Снтаксис удачнее для профессионального использования
источник

АР

Андрей Руссков... in pro.cxx
поддерживаемого не в том смысле что сам язык ужасный
источник

АР

Андрей Руссков... in pro.cxx
а в том, что специалистов на дельфи практически нет
источник

АР

Андрей Руссков... in pro.cxx
это как в анекдоте про охоту на драконов - большая часть зарабатывающих на дельфи его преподает
источник

CD

Constantine Drozdov in pro.cxx
Андрей Руссков
а в том, что специалистов на дельфи практически нет
Ну... там достаточно закономерный итог, его популярность была связана с тем, что паскаль использовался как учебный. Питон, видимо, лучше как учебный и все совсем закончилось
источник

АР

Андрей Руссков... in pro.cxx
ну а вчерашние студенты вам естественно большой проект не напишут
источник

CD

Constantine Drozdov in pro.cxx
При этом нишу делфи скушала Java / C#
источник

m

magras in pro.cxx
А в чем техническая сложность сделать reverse lookup для RTTI в плюсах? Перегрузки?
источник

CD

Constantine Drozdov in pro.cxx
magras
А в чем техническая сложность сделать reverse lookup для RTTI в плюсах? Перегрузки?
Нет технической сложности, есть последствия рантаймовой рефлексии, и они настолько большие, что в kotlin.native она удалена
источник

АР

Андрей Руссков... in pro.cxx
magras
А в чем техническая сложность сделать reverse lookup для RTTI в плюсах? Перегрузки?
рантайм рефлексия это дорого с точки зрения ресурсов. А компайл тайм рефлексию сделать непросто
источник

m

magras in pro.cxx
Андрей Руссков
рантайм рефлексия это дорого с точки зрения ресурсов. А компайл тайм рефлексию сделать непросто
Дорого? У нас уже есть type_info::name.
источник