0

这是困扰我一段时间的事情。

所以假设你有你的基类和派生类。您还有一个 baseClass 指针的容器对象,其中包含指向您正在管理的所有对象的指针。

当有一个带有派生类参数的重载函数时,问题就来了。

例子:

function foo(baseClass, baseClass);
function foo(baseClass, derivedClass);
function foo(derivedClass, derivedClass);

vector<baseClass*> objectList;

objectList.push_back(new derivedClass());
objectList.push_back(new derivedClass());

foo(objectList[0], objectList[1]); // <-- Here's the problem.

到目前为止,我一直在做一些骇人听闻的事情,那就是基于我定义的“getType()”枚举成员变量的“正确”类型的静态转换。这真的很难看,我想知道将这些参数作为派生类传递的正确方法。

或者这只是一个糟糕的整体设计?

不,容器类不能是derivedClass 类型... baseClass 是几个不同类的基础。虽然它在向量中,但我不在乎它是什么对象类型。当我将它传递给一个参数时,我想让编译器知道它是什么类型。

4

1 回答 1

0

您正在尝试进行多次调度

于 2012-05-29T23:25:25.603 回答