我有一个集合类,可以多态地保存和管理 Multinumber 类型的任何东西。这可以是 Pair、Rational 或 Complex 类型的对象。我遇到的问题是这个类需要动态内存管理,在很多情况下,比如下面的函数,我不知道要分配什么类型。由于该集合与类型无关,因此我不知道是否应该执行 Multinumber* var=new Complex、Rational 或 Pair。有什么方法可以检查我首先添加的类型,或者将此信息存储在另一种数据类型中而不会产生切片效果?我遇到此问题的一个功能是:
bool Set::addElement(Multinumber* newElement)
{
bool success = false;
if(isFull())
{
resize();
}
if(!isMember(newElement))
{
setArray[numElements] = newElement;
numElements++;
success = true;
}
return success;
}
编辑:我说的是这是我唯一可以分配的地方的情况,例如当调用 operator+ 并且必须立即将对象发送到这里,而调用类不知道类型是什么时。它发生在我的代码中的 Set operator+ 重载中,因为我 Set 不知道它在存储什么。