переопределение ошибки параметра по умолчанию без переопределения

Я получаю странный набор ошибок в моем компиляторе 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( );

```