Я думаю, что это будет странный вопрос, но мне интересно, возможно ли это вообще. Если я использую библиотеку, в которой у меня нет контроля, и если у нее есть класс Entity, который имеет виртуальные функции, а сама библиотека создает такие сущности, как Entity * e = new Entity(), есть ли способ получить класс от Entity, переопределить виртуальные функции и каким-то образом создать объект, который будет «нажимать» на виртуальные функции, если бы у меня был список объектов, которые были созданы с Entity * e = new Entity()? Обратите внимание, что я не контролирую этот код, поэтому я не могу изменить создание исходного объекта так, чтобы он был как Entity * e = new MyEntity().C++ «постукивание» в виртуальные функции базовых классов
0
A
ответ
1
Это невозможно при использовании стандартных конструкций C++. Вам нужно взломать vtable, с помощью google я нашел следующий хак, который достигает этого: http://www.codeproject.com/Articles/54238/Changing-an-Object-s-Polymorphic-Behavior-at-Runti. Конечно, вы должны быть очень осторожны, я бы не рекомендовал это использовать.
Смежные вопросы
- 1. Ambigious функции от различных базовых классов C++
- 2. C# Несколько базовых классов
- 3. Почему таблица методов содержит только виртуальные методы базовых классов?
- 4. Требуется переопределить виртуальные функции для вызова базовых реализаций
- 5. виртуальные функции в C++
- 6. C++ «Виртуальные функции, но не виртуальные деструкторы»
- 7. Объединить функции двух разных базовых классов
- 8. C++ коллекция абстрактных базовых классов
- 9. Виртуальные функции-члены в большинстве производных классов?
- 10. Две иерархии связанных классов - наиважнейшие виртуальные функции
- 11. Как переопределить виртуальные функции базовых классов, которые имеют одинаковые имена в множественном наследовании?
- 12. Неоднозначное наследование абстрактных базовых классов:
- 13. C++ - Условные виртуальные функции
- 14. Виртуальные функции C++
- 15. C++: Частные виртуальные функции в сравнении с чисто виртуальные функции
- 16. C++ Виртуальные функции Вопрос
- 17. Ограничение видимости абстрактных базовых классов в C#
- 18. Инициализация вариационных базовых классов
- 19. Как найти неопределенные виртуальные функции классов
- 20. C++ Функции, вызывающие виртуальные функции внутри
- 21. классы в C++ и виртуальные функции
- 22. Назначение абстрактных базовых классов
- 23. Как реализовать виртуальные функции C++ в C
- 24. C++: Декларирование указатель базовых и производных классов
- 25. понимание указателей C++ для родительских/базовых классов
- 26. Перегрузка операторов «базовых» классов
- 27. Regex базовых классов
- 28. Порядок удаления базовых классов
- 29. Виртуальные функции C++ Acting Weird
- 30. Виртуальные функции и производительность C++
Возможно, с помощью утилит-линкера, но не внутри самого C++. Вот почему инъекция зависимостей - хорошая идея для проверки. –