Using stack to store objects

I'm doing a program where I need to store objects in stack. I define the stack as a template class like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template < class T >
    class stackType
    {
    private:
        int maxStackSize;
        int stackTop;
        T *list;           // pointer to the array that holds the stack elements
    public:
        stackType( int stackSize );  // constructor
        ~stackType();                // destructor
        void initializeStack();
        bool isEmptyStack();
        bool isFullStack();
        void push( T newItem );
        T top();
        void pop();
    };


And this is my class:

1
2
3
4
5
6
7
8
9
10
11
12
class Matrix_AR
    {
    public:
        float **Matrix;        // Matrix as a pointer to pointer
        int rows, columns;     // number of rows and columns of the matrix
    
    // class function
        Matrix_AR();
        Matrix_AR( int m, int n ); // initialize the matrix of size m x n
        void inputData( string fileName ); // read data from text file
        void display(); // print matrix
    };


However, when I declare a function like this

1
2
3
4
5
6
7
8
void myfunction( stackType<Matrix_AR>& stack )
    {
        Matrix_AR item1, item2, item3;
        
        stack.push( item1 );
        stack.push( item2 );
        stack.push( item3 );
    }


I kept getting the error. I tried to fix it for five hours and still cannot figure it out. Could anyone help, please !!!

1
2
3
4
Undefined symbols for architecture x86_64:
          "Matrix_AR::Matrix_AR()", referenced from:
          myfunction(stackType<Matrix_AR>&, char&, bool&)in main.o
    ld: symbol(s) not found for architecture x86_64
Have you defined the Matrix_AR() constructor? If so, is the file you implemented it in also being compiled and linked?
I just figure it out. I forgot to declare the default constructor. Thank you for your reply.
Topic archived. No new replies allowed.