I looked at the other questions already asked on SO regarding this same error message. They say to make sure my definition matches my implementation, and it does (I think). I have multiple classes, linkedListType
(base template class), unorderedLinkedList
(derived template class), main
for testing it and a few others (can post snippets if needed).
When compiling it, I get this error:
Undefined symbols for architecture x86_64:
"linkedListType<int>::deleteAtIndex(int&)", referenced from:
deleteKthElement(unorderedLinkedList<int>&) in main.cpp.o
"linkedListType<int>::getInfoAtIndex(int)", referenced from:
printKthElement(unorderedLinkedList<int>&) in main.cpp.o
deleteKthElement(unorderedLinkedList<int>&) in main.cpp.o
"linkedListType<int>::linkedListType()", referenced from:
unorderedLinkedList<int>::unorderedLinkedList() in main.cpp.o
"linkedListType<int>::~linkedListType()", referenced from:
unorderedLinkedList<int>::~unorderedLinkedList() in main.cpp.o
"unorderedLinkedList<int>::deleteNode(int const&)", referenced from:
vtable for unorderedLinkedList<int> in main.cpp.o
"unorderedLinkedList<int>::insertLast(int const&)", referenced from:
vtable for unorderedLinkedList<int> in main.cpp.o
"unorderedLinkedList<int>::insertFirst(int const&)", referenced from:
vtable for unorderedLinkedList<int> in main.cpp.o
"unorderedLinkedList<int>::deleteSmallest()", referenced from:
vtable for unorderedLinkedList<int> in main.cpp.o
"unorderedLinkedList<int>::deleteAllOccurrences(int&)", referenced from:
vtable for unorderedLinkedList<int> in main.cpp.o
"unorderedLinkedList<int>::deleteFirstOccurrence(int&)", referenced from:
vtable for unorderedLinkedList<int> in main.cpp.o
"linkedListType<int>::printListReverse() const", referenced from:
reversePrint(unorderedLinkedList<int>&) in main.cpp.o
"linkedListType<int>::print() const", referenced from:
print(unorderedLinkedList<int>&) in main.cpp.o
"linkedListType<int>::length() const", referenced from:
printKthElement(unorderedLinkedList<int>&) in main.cpp.o
deleteKthElement(unorderedLinkedList<int>&) in main.cpp.o
"unorderedLinkedList<int>::search(int const&) const", referenced from:
vtable for unorderedLinkedList<int> in main.cpp.o
Looking at the first one (deleteAtIndex
):
linkedListType.h
:
template<class Type>
class linkedListType {
public:
...
void deleteAtIndex(int& desiredIndex);
}
linkedListType.cpp
:
template<class Type>
void linkedListType<Type>::deleteAtIndex(int& desiredIndex) {
nodeType<Type> *temp = getNodeAtIndex(desiredIndex);
nodeType<Type> *priorNode = getNodeAtIndex(desiredIndex-1);
priorNode->link = temp->link;
delete temp;
}
main.cpp
:
// a convenience function in main.cpp... both 'getInfoAtIndex' and 'deleteAtIndex' only exist in the base class
void deleteKthElement(unorderedLinkedList<int> &ull){
int elem;
cout << "Enter an integer specifying the index to delete (0 - " << ull.length() - 1 << "): ";
cin >> elem;
int info = ull.getInfoAtIndex(elem);
cout << "Info at index (" << elem << "): " << info << endl;
ull.deleteAtIndex(elem);
cout << "Node deleted." << endl;
}
I have no idea why these functions are giving me these errors.