这一直困扰着我一段时间。
所以假设你有你的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是几个不同类的基础。虽然它在向量中,但我不关心它是什么对象类型。当我将它传递给参数时,我希望编译器知道它是什么类型。