像往常一样提前谢谢...
我有类Base和类Thing都定义在base.lib
该类Base有一个受保护的虚函数createThing(),您可能会猜到它创建并返回一个实例Thing
现在; 我还有另一个项目,我们称之为“车库”。
在这个项目中,我有一个Garage(公开)派生自Base. 我还创建了Car派生自Thing.
在Garage中,我重写createThing()以返回 a 的实例Car。
好的。
这就是复杂的地方。
Base在我的情况下,实际上创建了一个工作线程(我尝试将线程主体作为私有成员Base,作为单独类的成员)。
在该工作线程中,createThing()通过如下指针调用:
Thing* thing = base->createThing();
单独测试时,这很好而且很花哨Base。
但是,一旦我创建了一个新项目并链接到base.lib,按照描述创建我的Garage和Car类,上面的行总是调用构造函数 forThing而从不调用Car
有人可以解释我做错了什么吗?
谢谢 :)
编辑:在这个例子中(在我的实际代码中),变量baseDEFINATLY 指向一个实例Garage
我刚刚尝试过的另一个测试,如果我将我的Garage(在堆栈上创建的)转换为一个Base指针,然后调用base->createThing(),它按预期工作。
只有当我让工作线程调用时base->createThing(),我才会遇到这个问题