#include <cstring>
#include <iostream>
template < typename T>
class LinkedList
{
private :
T element;
T * next;
public :
LinkedList( ) ;
LinkedList( T element) ;
void add( LinkedList< T> & otherList) ;
void print( ) ;
} ;
template < typename T>
LinkedList< T> :: LinkedList ( )
{
next = NULL ;
}
template < typename T>
LinkedList< T> :: LinkedList ( T element)
{
this- > element = element;
next = NULL ;
}
template < typename T>
void LinkedList< T> :: add ( LinkedList< T> & otherList)
{
next = & otherList;
}
template < typename T>
void LinkedList< T> :: print ( )
{
LinkedList< T> * current = this ;
while ( current ! = NULL )
{
std:: cout << current- > element;
current = current- > next;
}
}
int main( )
{
LinkedList< std:: string > myFirst( "First" ) ;
LinkedList< std:: string > mySecond( "Second" ) ;
myFirst.add ( mySecond) ;
myFirst.print ( ) ;
return 0 ;
}
I2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmNsYXNzIExpbmtlZExpc3QKewpwcml2YXRlOgogICAgVCBlbGVtZW50OwogICAgVCAqbmV4dDsKCnB1YmxpYzogICAgCiAgICBMaW5rZWRMaXN0KCk7CiAgICBMaW5rZWRMaXN0KFQgZWxlbWVudCk7CgogICAgdm9pZCBhZGQoTGlua2VkTGlzdDxUPiAmb3RoZXJMaXN0KTsKICAgIHZvaWQgcHJpbnQoKTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CkxpbmtlZExpc3Q8VD46OkxpbmtlZExpc3QoKQp7CiAgICBuZXh0ID0gTlVMTDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KTGlua2VkTGlzdDxUPjo6TGlua2VkTGlzdChUIGVsZW1lbnQpCnsKICAgIHRoaXMtPmVsZW1lbnQgPSBlbGVtZW50OwogICAgbmV4dCA9IE5VTEw7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgTGlua2VkTGlzdDxUPjo6YWRkKExpbmtlZExpc3Q8VD4gJm90aGVyTGlzdCkKewogICAgbmV4dCA9ICZvdGhlckxpc3Q7Cn0KCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIExpbmtlZExpc3Q8VD46OnByaW50KCkKewogICAgTGlua2VkTGlzdDxUPiAqY3VycmVudCA9IHRoaXM7CiAgICB3aGlsZSAoY3VycmVudCAhPSBOVUxMKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCBjdXJyZW50LT5lbGVtZW50OwogICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgfQp9CgppbnQgbWFpbigpCnsgICAgCiAgICBMaW5rZWRMaXN0PHN0ZDo6c3RyaW5nPiBteUZpcnN0KCJGaXJzdCIpOwogICAgTGlua2VkTGlzdDxzdGQ6OnN0cmluZz4gbXlTZWNvbmQoIlNlY29uZCIpOyAgICAKICAgIG15Rmlyc3QuYWRkKG15U2Vjb25kKTsKICAgIG15Rmlyc3QucHJpbnQoKTsgICAgCgogICAgcmV0dXJuIDA7Cn0=
compilation info
prog.cpp: In instantiation of ‘void LinkedList<T>::add(LinkedList<T>&) [with T = std::basic_string<char>]’:
prog.cpp:54:25: required from here
prog.cpp:35:10: error: cannot convert ‘LinkedList<std::basic_string<char> >*’ to ‘std::basic_string<char>*’ in assignment
next = &otherList;
^
prog.cpp: In instantiation of ‘void LinkedList<T>::print() [with T = std::basic_string<char>]’:
prog.cpp:55:19: required from here
prog.cpp:46:17: error: cannot convert ‘std::basic_string<char>*’ to ‘LinkedList<std::basic_string<char> >*’ in assignment
current = current->next;
^
stdout