-1

我的 Visual Studio 2010 编译器出现一组奇怪的错误。

我得到的错误

error C2572: redefinition of default parameter
error C2011: 'class' type redefinition

我仔细检查过,我很清楚在函数定义中,我没有给出默认参数值,我只在头文件的函数原型中给出了默认参数值。

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

请问有谁能告诉我出现这些错误的其他原因是什么?

4

1 回答 1

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( );
于 2013-02-13T05:59:45.143 回答