我有Base
Thing
和班级base.lib
Base
类有一个受保护的虚拟函数createThing()
,正如您可能猜到的那样创建并返回Thing
的实例
现在;我还有另一个项目,我们称之为“车库”。
在这个项目中,我有Garage
课程(公开)来自Base
。我还创建了源自Car
。
Thing
在Garage
中,我重写createThing()
以返回Car
的实例。
行。
这是复杂的地方。
在我的情况下, Base
实际上创建了一个工作线程(我已经尝试将线程主体作为Base
的私有成员,作为单独类的成员)。
在该工作线程中,createThing()
通过如下指针调用:
Thing* thing = base->createThing();
单独测试Base
时哪个很好,很花哨。
但是,只要我创建一个新项目并链接到base.lib
,按照描述创建我的Garage
和Car
类,上面的行总是调用{{1}的构造函数绝对不是Thing
有人可以解释一下我做错了吗?
谢谢:)
编辑:在此示例中(以及在我的实际代码中),变量Car
DEFINATLY指向base
的实例
我刚试过的另一个测试,如果我将Garage
(在堆栈上创建)转换为Garage
指针,然后调用Base
,它会按预期工作。
只有当我让工人线程调用base->createThing()
时,我才会遇到此问题
答案 0 :(得分:0)
我正在回答这个问题,因为我开始认为这是某种联系问题或无关的问题。所有评论都非常感谢,谢谢!!
编辑:完全删除项目并重新开始工作,我无法想象发布的是什么,但可能是VC ++中的一些奇怪的错误
全部谢谢!