0

像往常一样提前谢谢...

我有类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,按照描述创建我的GarageCar类,上面的行总是调用构造函数 forThing而从不调用Car

有人可以解释我做错了什么吗?

谢谢 :)

编辑:在这个例子中(在我的实际代码中),变量baseDEFINATLY 指向一个实例Garage

我刚刚尝试过的另一个测试,如果我将我的Garage(在堆栈上创建的)转换为一个Base指针,然后调用base->createThing(),它按预期工作。

只有当我让工作线程调用时base->createThing(),我才会遇到这个问题

4

1 回答 1

0

我自己回答这个问题是为了结束这个问题,因为我开始认为这是某种链接问题或不相关的问题。所有的评论都非常感谢,谢谢!!

编辑:完全删除项目并重新开始工作,我无法想象问题是什么,但大概是 VC++ 中的一些奇怪的错误

谢谢大家!

于 2013-07-01T15:43:54.983 回答