I am currently trying to figure out why my program is not compiling. The assignment is for solving a maze, but I'm at the point where I need to display the maze to.
I am getting some very strange errors that my professor is not helping us with, they are as follows:
/tmp/cc0DImq3.o: In function `main':
main.cpp:(.text+0x57): undefined reference to `Maze::Maze(std::string)'
main.cpp:(.text+0x6f): undefined reference to `Maze::display()'
main.cpp:(.text+0x7b): undefined reference to `Maze::~Maze()'
main.cpp:(.text+0xae): undefined reference to `Maze::~Maze()'
main.cpp:(.text+0xbf): undefined reference to `Maze::~Maze()'
collect2: error: ld returned 1 exit status
main.cpp
    #include <iostream>
    #include <queue>
    #include "maze.h"
    using namespace std;
    struct Location{
        int row;
        int col;
    };
    // Starting point for the program, User types in a filename and then launches
    int main(){
        string fileName;
        cout << "Please Enter the name of the maze you would like to use:";
        cin >> fileName;
        Maze m(fileName);
        m.display();
    }
maze.h
#ifndef MAZE_H
#define MAZE_H
#include <string>
#include <iostream>
using namespace std;
class Maze{
    private: 
        char **mazeArray;   // the maze representation
        int sCol;           // The column for the starting point
        int sRow;           // The row for the starting point
        int gCol;           // The column for the goal point
        int gRow;           // The row for the goal point
        int width;          // The number of columns on the map 
        int height;         // The number of roww on the map
    public:
        Maze(string);
        ~Maze();
        void display();     //  Dsplay the maze, ? - is unexplored tile
        char explore( int, int ); // for exploring a particular position
        void setVisited( int, int ); // set position as visited
        int getWidth(){return width;}
        int getHeight(){return height;}
        int getStartRow(){return sRow;}
        int getStartCol(){return sCol;}
        int getGoalRow(){return gRow;}
        int getGoalCol(){return gCol;}
};
#endif // MAZE_H
maze.cpp
include <fstream>
#include "maze.h"
//Constructor
Maze::Maze(string filename){
    ifstream infile;
    infile.open(filename.c_str());
    if(!infile.fail()){
        // Obtain the width and Height
        infile >> width;
        infile >> height;
        mazeArray = new char*[height];
        for(int i = 0; i < height; i++){
            mazeArray[i] = new char[width];
        }
        infile.get(); // Make a newline
        // Loop for stepping through each position in array
        for(int i = 0; i < height; i++){
            for(int j = 0; j < width; j++){
                mazeArray[i][j] = (char)infile.get(); // obtains one character
                // check for the starting and goal points and same them
                if( mazeArray[i][j] == 'S'){
                    sCol = j;
                    sRow = i;
                } else if( mazeArray[i][j] == 'X'){
                    gCol = j;
                    gRow = i;
                }
            }
            // Makes a new line at the end of the array
            infile.get();
        }
    } else { // The file failed to open!
        cout << "Unable to open the maze file." << endl;
        //exit(1);
    }
    infile.close();
}
//Deconstructor 
Maze::~Maze(){
    for(int i = 0; i < height; i++){
        delete [] mazeArray[i];
     }
     delete [] mazeArray;
}
void Maze::display(){
    cout << endl; // Space before the array
    // Step through the 2d array and print each value
    int i, j;
    for(i = 0; i < height; i++){
        for(j = 0; j < width; j++){
            cout << mazeArray[i][j];
        }
        cout << endl;
    }
    cout << endl;
}
char Maze::explore( int row, int col){
    // Checks if the parametes are in the map
    if(row >= height || col >= width){
        cout << "Invalid: move out of bounds" << endl;
        return 'X'; // returns an error value.
    }
    return mazeArray[row][col]; // return what is in the location
}
void Maze::setVisited( int row, int col){
    if(mazeArray[row][col] == '.' || mazeArray[row][col] == 'S'){
        mazeArray[row][col] = '*' // set the space to visited
    }
}
 
    