I have a generic linked list class LList<T>
with a LList<T>::insert()
method for inserting a sorted Node. I would like to specialize the insert()
function to have different sorting when the type is std::string
, but I get an error:
LINK1169 "one or more multiply defined symbols found"
Below is the relevant code which yields that error:
LinkedList.h
template<typename T>
class LList
{
private:
struct LLNode
{
//node code
};
LLNode* head, * tail;
public:
LList<T>() : head(nullptr), tail(nullptr) {}
~LList<T>() {}
//generic function, trying to specialize
void insert(const T&);
};
LinkedList.cpp
//definitions of generic insert function
template<typename T>
void LList<T>::insert(const T& newData)
{
//code
}
//I would like to specialize as follows
void LList<std::string>insert(const std::string& newData)
{
//code
}
I tried adding another function definition to the Linked List class in the .h
, as is done for generic function specialization outside of classes:
void LList<std::string>::insert(const std::string&);
But that just yields 4 new errors, all on that new line:
'string': is not a member of 'std'
'void LList<std::string>::insert(const T &)': member function ready defined or declared
missing type specifier - int assumed. Note C++ does not support default-int
syntax error: missing ',' before '&'
Is there a way for me to specialize the insert()
member function similar to specializing templates normally?