C ++类重定义错误帮助

时间:2010-06-23 04:26:22

标签: c++ compiler-errors redefinition

我收到的错误如下:

FxMathFunctions.h: In function 'FxInt32 IMin(FxInt32, FxInt32)':

FxMathFunctions.h:13: error: redefinition of 'FxInt32 IMin(FxInt32, FxInt32)'

FxMathFunctions.h:15: error: 'FxInt32 IMin(FxInt32, FxInt32)' previously defined here

在FxMathFunctions.h我有:

11: struct FxPoint2d;
12:
13: inline FxInt32 IMin(FxInt32 i1,FxInt32 i2)
14: {
15:    if (i2 < i1) i1 = i2;
16:    return i1;
17: }

FxInt32在我包含的标题中定义:

typedef long                FxInt32;

如果错误地说FxInt32正在被重新定义或整个函数是否正确,我无法通过错误来决定。

我该如何解决这个问题?

更新我在上面添加了行号。

3 个答案:

答案 0 :(得分:1)

它说整个函数定义了两次。

我的通灵调试能力告诉我你以某种方式递归地包括那个标题,并且该标题没有适当的防范这种情况发生。因此,内联函数定义了两次。

答案 1 :(得分:0)

将函数定义移动到.cpp文件中即可 .h文件中的原型。让编译器担心优化

答案 2 :(得分:0)

如果不知道FxMathFunctions.h第13行和第15行的内容,很难说。也就是说,请记住,C ++在<algorithm>中有一个内置的std::minstd::max,它们适用于所有类似的类型。