这是困扰我一段时间的事情。
所以假设你有你的基类和派生类。您还有一个 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 是几个不同类的基础。虽然它在向量中,但我不在乎它是什么对象类型。当我将它传递给一个参数时,我想让编译器知道它是什么类型。