Ich habe eine Set-Klasse, die alles vom Typ Multinumber polymorph halten und verwalten kann. Dies kann ein Objekt vom Typ Paar, Rational oder Komplex sein. Das Problem, auf das ich stoße, ist, dass diese Klasse eine dynamische Speicherverwaltung benötigt und in vielen Fällen, wie die Funktion unten, weiß ich nicht, welchen Typ ich zuordnen soll. Da die Menge vom Typ agnostisch ist, kann ich nicht wissen, ob ich Multinumber * var = new Complex, Rational oder Pair machen soll. Gibt es eine Möglichkeit, den Typ von dem, was ich zuerst hinzufüge, zu überprüfen, oder diese Information in einem anderen Datentypen ohne den Schnitteffekt zu speichern? Eine Funktion, wo ich dieses Problem haben, ist dies:Wie kann ich Speicher dynamisch einem polymorphen Datentyp zuweisen?
bool Set::addElement(Multinumber* newElement)
{
bool success = false;
if(isFull())
{
resize();
}
if(!isMember(newElement))
{
setArray[numElements] = newElement;
numElements++;
success = true;
}
return success;
}
EDIT: Ich spreche über Situationen, in denen dies ist der nur Ort, den ich könnte möglicherweise zuweisen, beispielsweise wenn ein Operator + genannt wird und muss sofort die schicken Objekt hier, und die aufrufende Klasse weiß nicht, was der Typ ist. Es passiert in meinem Code im Set Operator + Overload, da ich das Set nicht weiß was es speichert.
Sie scheinen * Zeiger * in 'setArray' zu speichern, was in Ordnung ist. Was ist das Problem, das du hast? –