I've a very simple class. It has a pointer member variable. I want to overload the + operator. But, it doesn't work! Here is my code:
#include <iostream>
using namespace std;
template <typename T> 
struct Node{
    Node *next;
    T data;
};
template <typename T> 
class stack{
protected:
    Node <T> *head;
public:
    stack();
    ~stack();
    bool push(T);
    stack <T> operator+ (stack <T>);
};
template <typename T> 
stack<T>::stack(){
    head = NULL;
}
template <typename T>  
stack <T>::~stack(){
    Node <T> *temp;
    while(head){
        temp = head;
        head = head->next;
        delete temp;
    }
}
template <typename T> 
bool stack <T>::push(T data){
    Node <T> *newElem = new Node <T>;
    if (!newElem) return false;
    newElem->next = head;
    newElem->data = data;
    head = newElem;
    return true;
}
template <typename T> 
stack <T> stack<T>::operator+ (stack <T> stack1){
    stack <T> result;
    Node <T> *temp = head;
    while (temp) {
        result.push(temp->data);
        temp = temp->next;
    }
    temp = stack1.head;
    while (temp) {
        result.push(temp->data);
        temp = temp->next;
    }
    return result;
}
int main(){
    stack <int> myStack1, myStack2, myStack3;
    myStack1.push (1);
    myStack1.push (2);
    myStack2.push (3);
    myStack2.push (4);
    myStack3 = myStack1 + myStack2; //  here at runtime myStack3 is not the result of myStack1 + myStack2. 
    return 0;
}
Could you please help me with this? Please note that this is just for practice.
Thank you very much.
 
     
     
    