I was making this add function definition but I keep getting these conversion errors and I think I called a class or function wrong but I do not really understand or can find what's causing the errors. (Sorry about the long function, I tried to cut it down)
template<class ItemType>
bool FDHPolynomial<ItemType>::add(const ItemType& newCoefficient, const ItemType& newExponent)
{
if (newCoefficient == 0)//not wasting memory to store 0
{
return false;//no node added
}
else if (isEmpty())//if this is the first node added
{
FDHNode<ItemType>* newNodePtr = new FDHNode<ItemType>();//create new node
newNodePtr->setCoeffi(newCoefficient);//set contents
newNodePtr->setExpon(newExponent);
newNodePtr->setNext(nullptr);//since this is the only node, next value is nullptr
headPtr = newNodePtr;//first node is the head node
itemCount++;
}
else if (contains(newExponent))//if a node of this degree exists, add to its exponent
{
FDHNode<ItemType>* nodeToModifyPtr = getPointedTo(newExponent);//find the existing node
ItemType sumCoefficient = newCoefficient + nodeToModifyPtr->getCoeffi();//add new coefficient to existing coefficient
if (sumCoefficient == 0)//if added value cancels out a value
{
remove(newExponent);
}
else
{
nodeToModifyPtr->setCoeffi(sumCoefficient);//apply sum of coefficients
}
//itemCount does not increment
}
else if (newExponent > degree())//if new exponent is greater than any existing exponents
{
FDHNode<ItemType>* newNodePtr = new FDHNode<ItemType>();//create new node
newNodePtr->setCoeffi(newCoefficient);//set contents
newNodePtr->setExpon(newExponent);
newNodePtr->setNext(headPtr);//place at front of the chain
headPtr = newNodePtr;//new node is now the head node
itemCount++;
}
else//if new node needs to be inserted somewhere after the head node
{
FDHNode<ItemType>* newNodePtr = new FDHNode<ItemType>();//create new node
newNodePtr->setCoeffi(newCoefficient);//set contents
newNodePtr->setExpon(newExponent);
FDHNode<ItemType>* curPtr = headPtr;//this pointer will cycle through nodes until either a node with a degree smaller than newExponent is found or the last node is reached
while ((curPtr->getExpon() > newExponent) && (curPtr->getNext() != nullptr))
{
curPtr = curPtr->getNext();//advance curPtr
}
Aucun commentaire:
Enregistrer un commentaire