像往常一样提前谢谢...
我有类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
有人可以解释我做错了什么吗?
谢谢 :)
编辑:在这个例子中(在我的实际代码中),变量base
DEFINATLY 指向一个实例Garage
我刚刚尝试过的另一个测试,如果我将我的Garage
(在堆栈上创建的)转换为一个Base
指针,然后调用base->createThing()
,它按预期工作。
只有当我让工作线程调用时base->createThing()
,我才会遇到这个问题