我认为这将是一个奇怪的问题,但我想知道它是否可能。如果我正在使用一个我无法控制的库,并且它有一个具有虚函数的Entity类,并且库本身正在创建像Entity * e = new Entity()这样的实体,那么我是否可以派生出一个来自Entity的类,覆盖虚函数,并以某种方式创建一个对象,如果我有一个使用Entity * e = new Entity()创建的实体列表,它将“点击”到虚函数中?请注意,我无法控制该代码,因此我无法更改原始实体的创建,因此它就像Entity * e = new MyEntity()。
答案 0 :(得分:1)
标准C ++结构无法实现这一点。你需要破解vtable,谷歌我发现以下黑客实现了这个目标:http://www.codeproject.com/Articles/54238/Changing-an-Object-s-Polymorphic-Behavior-at-Runti。当然,你应该非常小心这样做,我不建议使用它。