类的多重定义

时间:2014-05-02 12:41:09

标签: c++ class definition

首先我知道这个问题已经经常得到解答,但答案对我帮助不大...

这是导致错误的代码。

#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 - 但我什么也没找到。

1 个答案:

答案 0 :(得分:1)

您不应包含源文件(.cpp)。改为包含标题。

您的问题可能是由于您所说的在main.cpp中包含源文件然后单独编译它而引起的。在这种情况下,WayFinderClass.cpp中定义的函数将由于包含而在main中再次定义,并且您不能为函数定义多个定义。