我在Visual Studio 2010编译器中遇到一组奇怪的错误。
我收到
的错误error C2572: redefinition of default parameter
error C2011: 'class' type redefinition
我已经彻底检查了,我非常清楚在函数定义中,我没有给出默认参数值,我只在头文件中的函数原型中给出了默认参数值。
另外,我非常确定没有两个班级被赋予相同的班级名称。
任何人都可以告诉我出现这些错误的其他原因是什么?
答案 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( );