从容器类调用正确的重载函数

时间:2012-05-29 23:10:24

标签: c++ vector templating derived-class

这一直困扰着我一段时间。

所以假设你有你的baseClass和derivedClass。您还有一个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.

到目前为止,我一直在做一些hackish,并且这是基于我定义的“getType()”枚举成员变量的static_cast-ing到“正确”类型。它真的很难看,我想知道将这些参数作为派生类传递的正确方法。

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

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

1 个答案:

答案 0 :(得分:0)

您正在尝试multiple dispatch