|
Заблокирован
|
||||||
Можно ли в рантайме получить список функций - членов класса?13.11.2014, 10:54. Показов 3375. Ответов 14
Метки нет (Все метки)
Допустим:
0
|
||||||
| 13.11.2014, 10:54 | |
|
Ответы с готовыми решениями:
14
Передача функций обратного вызова как членов некоторого класса Можно ли как-то получить из одного класса исходный код другого класса? |
|
|
|
| 13.11.2014, 11:03 | |
|
-THE_MASTER666-, чувамк, ты языком ошибся. Это не интерпретируемая скриптота и не байт-код, выполняемый на виртуалке. С++ нативный язык.
Не по теме: Регистрация: 13.10.2014
0
|
|
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|||||||
| 13.11.2014, 11:06 | |||||||
Добавлено через 1 минуту
0
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 13.11.2014, 11:07 | |
|
-THE_MASTER666-, У Qt своя мета-система, поэтому там это возможно. В стандартном С++ нет.
0
|
|
|
Заблокирован
|
|||
| 13.11.2014, 11:13 [ТС] | |||
![]() На этапе сборки проекта всю эту лабуду с пол пинка узнать можно, ну по - крайней мере в VS, всякими препроцессорными штуковинами типа: __FUNCTION__, __FUNCDNAME__ и т.д., а вот в рантайме хз как это сделать... Ну нет - так нет, проехали
0
|
|||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 13.11.2014, 11:14 | |
Сообщение было отмечено -THE_MASTER666- как решение
Решение
-THE_MASTER666-, С чего бы это мета-программирование галимое? Потому что вы его не понимаете? В общем и целом нет, не обойтись. Про MOC в Qt - http://qt-project.org/doc/qt-4.8/moc.html
2
|
|
|
Заблокирован
|
||
| 13.11.2014, 11:19 [ТС] | ||
Ладно, понял, в мета муть лезть не буду, поменяю стратегию разработки лучше . Спасибо.
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 13.11.2014, 12:20 | |
|
Я почти уверен, что необходимость в такой экзотике не очень нужна и проблема лишь в проектировании.
Это как получение указателя на таблицу виртуальных функция для ручного каста её в другую таблицу. Лучше опишите проблему, наверняка есть методы решения получше.
3
|
|
|
|
|
| 13.11.2014, 12:44 | |
|
Можно сделать мега костыль, обмотанный кровавыми бинтами, в виде макроса, который будет применяться для определения класса, который будет для каждого метода делать метод, возвращающий его имя/сигнатуру в виде строки. Но это жесть конечно.
0
|
|
|
Заблокирован
|
||
| 13.11.2014, 12:59 [ТС] | ||
|
В общем попытайтесь уловить мысль. В упрощённом варианте: есть блок - схема - архитектура системы, на этой блок схеме есть прямоугольнички - отдельные объекты архитектуры, в каждом объекте есть входящие и исходящие слоты для обмена данными между объектами архитектуры. Каждый входящий и исходящий слот типизирован... Каждый прямоугольник включает в себя его название, ну там описание id ещё кое что и в том числе возможные варианты типов данных, с которыми он работает... [Документ] .... [Набор операционных типов данных 1] = (этот набор в виде строки описания семантики) [INT, FLOAT, DOUBLE] [Набор операционных типов данных 2] = (этот набор в виде строки описания семантики) [CHAR*, CHAR*, INT] и тд Хмм...как бы объяснить то.... То есть каждый объект документа имеет список вариантов наборов данных, которые могут представлять этот объект... Ну вот ещё пример: [Документ : "Целое число 1"] [Набор операционных типов данных 1] = [INT] [Документ : "Целое число 2"] [Набор операционных типов данных 1] = [INT] [Документ : "Очень хитрое перемножение двух целых чисел"] [Набор операционных типов данных 1] = [INT] (тут INT - это результат) В общем эту блок схему допустим я рисую в каком то своём графическом редакторе и сохраняю её в файл. Да не суть... Короче, тут надо вот что... Разрисовал я огромную блок схему архитектуры системы, к которой есть куча прямоугольничков, которые принимают на вход какие - то данные и испускают на выход другие. Всё остальное и прочие нюансы обсуждать не будет - очень долго. Суть в том, что теперь я хочу нагрузить свою группу программистов работой. Как? А просто, я каждому программисту даю по прямоугольничку, код которого он должен будет написать. На самом деле там всё не так и на много сложнее, тут просто для простоты так описываю. Так вот, каким бы макаром сделать этот процесс безопасным и автоматизированным в том плане, чтоб программист получил на вход именно то, что я напроектировал в своей системе? То есть по хорошему... Стоп, ещё упростим: мне надо из работающей 24/7 системы, которая периодический свопит свою конфигурацию на хард давать задания программистам на разработку кода определённых новых объектов системы, допустим эти объекты вообще являются простыми функциями, у которых есть список аргументов и возвращаемое значение. В системе у меня эта функция из предыдущего упрощения является прямоугольником с входящими слотами и одним исходящим. Какие типы переменных идут на вход и на выход (слоты в упрощение) у меня записано в текстовом виде. Теперь главный вопрос, как мне дать программисту задание на написание функции, чтоб он как в случае с чисто виртуальной функцией был обязан её написать и именно с теми аргументами и возвращаемым значение, которые у меня в системе в текстовом виде? Полагаю, что тут нужно автоматом генерить код абстрактного класса с необходимой функцией, добавлять его в колекциою файлов системы и говорить программисту, чтоб он наследовался от него и писал код... Так?
0
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 13.11.2014, 13:09 | ||
|
2. Не автоматизировать то, что автоматизируется плохо. 3. Отказаться от сложных процессов в пользу простых.
1
|
||
|
Заблокирован
|
||||
| 13.11.2014, 13:15 [ТС] | ||||
![]()
0
|
||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 13.11.2014, 13:22 | ||
|
Хотя я не представляю зачем всё это нужно на деле. Легче написать юнит тесты и заставить систему проходить их, проверяя соответствует ли функция своему логическому содержанию, а не оценивая её поверхностно (читать TDD). Можно написать тесты, подставляющие с помощью макросов в реализованном классе наследование от примитивного абстрактного и пробовать создать объект. Всё равно я не до конца уловил суть проблемы, зачем нужно проверять сигнатуру, в то время, как функция может быть всего-лишь пустышкой.
0
|
||
|
Ушел с форума
|
||
| 13.11.2014, 13:26 | ||
|
может извлекаться динамически. В частности, IDispatch так работает, а на нем построены JScript/VBScript в Windows и еще куча других компонентов.
1
|
||
|
Заблокирован
|
||
| 13.11.2014, 13:35 [ТС] | ||
|
Вот пример: [Два числа для умножения] [INT - первое число] [INT - второе число] или [INT - второе число] [INT - первое число] или [FLOAT - второе число] [INT - первое число] То есть набор самих типов данных - это так, для совместимости с С++ ))))))) Главное это [Два числа для умножения], то есть именно это и является типом данных. В моём случае это и есть некоторый прямоугольник. минутку . сейчас в пэйнте нарисую
0
|
||
| 13.11.2014, 13:35 | |
|
Помогаю со студенческими работами здесь
15
Получить список функций из DLL Как получить доступ к членам класса из функций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|