我的 Visual Studio 2010 编译器出现一组奇怪的错误。
我得到的错误
error C2572: redefinition of default parameter
error C2011: 'class' type redefinition
我仔细检查过,我很清楚在函数定义中,我没有给出默认参数值,我只在头文件的函数原型中给出了默认参数值。
另外,我非常确定没有两个类被赋予相同的类名。
请问有谁能告诉我出现这些错误的其他原因是什么?
我的 Visual Studio 2010 编译器出现一组奇怪的错误。
我得到的错误
error C2572: redefinition of default parameter
error C2011: 'class' type redefinition
我仔细检查过,我很清楚在函数定义中,我没有给出默认参数值,我只在头文件的函数原型中给出了默认参数值。
另外,我非常确定没有两个类被赋予相同的类名。
请问有谁能告诉我出现这些错误的其他原因是什么?
我没有得到它发生的确切原因,但我已经通过使用一些简单的技术克服了它。
我使用函数重载概念来避免默认参数列表。它会导致代码重复,但事实证明它非常有效。
所以像这样
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( );