重新定义默认参数错误而不重新定义

时间:2013-01-29 08:12:19

标签: visual-c++ compiler-errors

我在Visual Studio 2010编译器中遇到一组奇怪的错误。

我收到

的错误
error C2572: redefinition of default parameter
error C2011: 'class' type redefinition

我已经彻底检查了,我非常清楚在函数定义中,我没有给出默认参数值,我只在头文件中的函数原型中给出了默认参数值。

另外,我非常确定没有两个班级被赋予相同的班级名称。

任何人都可以告诉我出现这些错误的其他原因是什么?

1 个答案:

答案 0 :(得分:1)

我还没有找到它发生的确切原因,但我已经通过一些简单的技术克服了它。

我使用函数重载概念来避免默认参数列表。它会导致代码重复,但事实证明它非常有效。

这样的事情

void myFunction( int, char * = '\0', char * = '\0' );

会变成这样的东西

void myFunction( int );
void myFunction( int, char * );
void myFunction( int, char *, char * );

在这个例子中,代码重复了两次,但它似乎只能解决方案。

接下来,对于奇怪的类类型重定义错误,我在许多文件中实例化了类变量。所以,我在任何地方删除了实例化的功能,并使用类似的全局变量。

名为myHeader.h的文件

#include "myFile.h"
myClass myObj;

在所有其他文件中

#include "myHeader.h"
myObj.function1( );
myObj.function2( );