samedi 5 décembre 2015

Issues with compiling multiple files

So I'm trying to write a bit of code to work with sudoku puzzles, and I keep getting errors when I try to compile, and each time i compile it deletes the driver.

heres the code for the driver:

/*
 * Jared C
 * C++ Project
 */
#include <iostream>
#include "SudokuBoard.h"

using namespace std;

int main()
{
    SudokuBoard board("sudoku.txt");
    board.printBoard();
}

And here's the header file

/*
 * Jared C
 * SudokuBoard.h
 */

#ifndef __SUDOKUBOARD_H_INCLUDED__ 
#define __SUDOKUBOARD_H_INCLUDED__  

#include <iostream>
#include <string>

class SudokuBoard
{
  private:
    int content[9][9];

  public:
    SudokuBoard(std::string filename);
    void printBoard();
    int getNumAt(int, int);
    void setNumAt(int, int, int);
};

#endif

And finally the Sudoku Board.cpp

/*
 * Jared C
 * SudokuBoard.cpp
 */

#include <iostream>
#include <fstream>
#include "stdlib.h"
#include "SudokuBoard.h"


using namespace std;

SudokuBoard::SudokuBoard(string filename)
{
    string output;
    string line;
    int count = 0;
    ifstream file;
    file.open(filename.c_str());
    if (file.is_open())
    {
        while (getline (file, line))
        {
            output += line;
        }
        file.close();
    }
    else cout<< "unable to open file" << endl;
    for(int y = 0; y < 9; y++)
    {
        for(int x = 0; x < 9; x++)
        {
            content[x][y] = atoi(output.substr(count,1).c_str());
            count ++;
        }
    }
}

void SudokuBoard::printBoard()
{
    string output = "\n";

    for(int y = 0; y < 9; y++)
    {
        if(y%3==0)
        {
            output += '\n';
        }
        for(int x = 0; x < 9; x++)
        {
            if(x%3==0)
            {
                output += " ";
            }
            output += content[x][y];
            output += "\n";
        }
    }
    cout<<output<<endl;
}

int SudokuBoard::getNumAt(int x, int y)
{
    return content[x][y];
}

void SudokuBoard::setNumAt(int x, int y, int value)
{
    content[x][y] = value;
}

When i call gcc -c SudokuBoard.cpp I get the SudokuBoard.o file just fine, but when I then call 'gcc -o Driver.cpp SudokuBoard.o' I get a huge wall of error messages, heres a sample of them:

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11


SudokuBoard.cpp:(.text+0x34): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
SudokuBoard.cpp:(.text+0x43): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'

And it deletes Driver.cpp Any idea what I'm doing wrong?

Aucun commentaire:

Enregistrer un commentaire