首先我知道这个问题已经经常得到解答,但答案对我帮助不大...
这是导致错误的代码。
#include "WayFinderClass.h"
WayFinderClass::WayFinderClass(int NavigationMapIndex) { ... };
int WayFinderClass::TotalNumberOfPoints(int point[100][100][2]) { ... };
int WayFinderClass::ConnectedWithXPoints(int point[100][100][2], int pointID) { ... };
void WayFinderClass::findWay(int start, int goal) { ... };
WayFinderClass.h:
#ifndef WAYFINDERCLASS_H_INCLUDED
#define WAYFINDERCLASS_H_INCLUDED
#include "NavigationMap.h"
class WayFinderClass {
public:
int finalWay[100];
int start;
int goal;
int alreadyCheckedInt[100];
void findWay(int start, int goal);
WayFinderClass(int NavigationMapIndex);
private:
int pointConnectedWith[100];
int wayProgress[100][100];
int numberOfPoints;
bool antsInProgress[100];
int TotalNumberOfPoints(int point[100][100][2]);
int ConnectedWithXPoints(int point[100][100][2], int pointID);
NewNavigationMap NavigationMap;
};
#endif // WAYFINDER_H_INCLUDED
这就是我得到的错误:
C:\{...} Line 3 multiple definition of 'WayFinderClass::WayFinderClass(int)'
那我该怎么办?我已经尝试包含.h文件,但它没有帮助我。 我还检查了每个其他文件是否第二次包含文件WayFinderClass.cpp - 但我什么也没找到。
答案 0 :(得分:1)
您不应包含源文件(.cpp)。改为包含标题。
您的问题可能是由于您所说的在main.cpp中包含源文件然后单独编译它而引起的。在这种情况下,WayFinderClass.cpp
中定义的函数将由于包含而在main中再次定义,并且您不能为函数定义多个定义。