multiple definitions error

im writing a program for the knights tour.i have one file that lists the definitions for a function in another file and thus get multiple definition error.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "location.h"
bool Gameover(location,int);
location getlocation(location,int,int);
bool available(location);
void record(location,int);
void erase(location,int);

bool Gameover(location curocn,int marker)
{
     int n;
     location curlocn;
     if (marker==n*n)
        return 1;
}
location getlocn(location curlocn,int choice)
{
         int marker;
         location nextlocn;
         for(int choice=1;choice<=8;choice++)
         {
         switch(choice)
         {
         case 1:
              nextlocn=curlocn.inc(2,1);
              marker++;
              return nextlocn;
         case 2:
              nextlocn=curlocn.inc(2,-1);
              marker++;
              return nextlocn;
         case 3:
              nextlocn=curlocn.inc(1,2);
              marker++;
              return nextlocn;
         case 4:
              nextlocn=curlocn.inc(1,-2);
              marker++;
              return nextlocn;
         case 5:
              nextlocn=curlocn.inc(-2,1);
              marker++;
              return nextlocn;
         case 6:
              nextlocn=curlocn.inc(-2,-1);
              marker++;
              return nextlocn;
         case 7:
              nextlocn=curlocn.inc(-1,2);
              marker++;
              return nextlocn;
         case 8:
              nextlocn=curlocn.inc(-1,-2);
              marker++;
              return nextlocn;
         }
    }
}
bool available(location nextlocn)
{
     int board;
     int* size;
     int open = 0;
     if (board[size][size]== open)
     return 1;
}
void record(location nextlocn,int marker)
{
     std::cout<<nextlocn<<"space number: "<<marker<<std::endl;
}
void erase(location nextlocn,int marker)
{
     location curlocn;
     int board;
     int* size;
     int open =0;
     if (board[size][size]!=open)
     {
       marker--;
       curlocn=nextlocn;
     }
}


main:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include<iostream>
#include "location.h"
#include "Knight.cpp"
#define maxchoice 8
int initalize(int);
bool findsoln(location,int);
void printboard(int);
int board;
int size; 
int main()
{
   location startlocation;
   location curlocn;
   location TopLt(0,0);
   location BottomRt(size-1,size-1);
   int marker=0;

    
    std::cout<<"Enter a size for the board: "<<std::endl;
    std::cin>>size;
    std::cout<<"Enter an starting location: "<<std::endl;
    std::cin>>startlocation;
    curlocn=startlocation.WithinRectangle(TopLt,BottomRt);
    
    int initialize(size);
    findsoln(curlocn,marker);
    printboard(size);
    
    return 0;
    
    
}

int initialize(int boardsize)
{
     int board[boardsize][boardsize];
      for(int i=0;i<boardsize;i++)
    {
      for(int j=0;j<boardsize;j++)
        {
          board[i][j]=0;
        }
    }
}
void printboard(int boardsize)
{
 int board[boardsize][boardsize];
  for(int c=0;c<boardsize;c++)
    {
      for(int d=0;d<boardsize;d++)
        {
          if(d==size-1)
            {
              std::cout<<"| "<<board[c][d]<<" |"<<std::endl;
            }
          else
{
              std::cout<<"| "<<board[c][d]<<" ";
            }
        }
    }
}

bool findsoln(location curlocn,int marker)
{
     location nextlocn;
     if (Gameover(curlocn,marker))
        return 1;
     else
     {
         for(int choice=0;choice<=maxchoice;choice++)
         {
                 nextlocn=getlocn(curlocn,choice);
                 if(available(nextlocn))
                 {
                 record(nextlocn,marker);
                 if(findsoln(nextlocn,marker++))
                    return 1;
                 else
                 erase(nextlocn,marker);
                 }
          }
     }
}
          
         


if someone can help me out,i would appreciate it.
Did you used Ifndef in your header?
Line 3: #include "Knight.cpp" Never include sourcefiles, you need to link them
Did you used Ifndef in your header?


yes,in another file.

Line 3: #include "Knight.cpp" Never include sourcefiles, you need to link them

how do you link source files?
If you are using an IDE you don't have to care about this as long as you have all the sourcefiles in the same project.
so if i include all of the sourcefiles in the mainprogram,it will fix the error?
Don't #include source files - Never, Nowhere - , use your IDE's project managing the compiler, linker and multiple sourcefiles.
Topic archived. No new replies allowed.