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

Я получаю странный набор ошибок в моем компиляторе Visual Studio 2010.

Я получаю ошибки

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

Я проверил полностью, и я очень хорошо знаю, что в определении функции я не дал значения параметров по умолчанию, и я дал значение параметра по умолчанию только в прототипе функции в файле заголовка.

Кроме того, я очень уверен, что ни одному классу не присвоено одно имя класса.

Пожалуйста, кто-нибудь скажет мне, какие могут быть другие причины для получения этих ошибок?

1
nl ja de
и где код? или мы должны угадать?
добавлено автор Marius Bancila, источник
Привет @Marius Bancila, спасибо за ответ. Код действительно огромный, и я не могу опубликовать его здесь. Я сделал некоторые методы проб и ошибок, и я узнал, что это происходит из-за включения определенных пользователем файлов заголовков в разные файлы. Я считаю, что где-то создает круговую зависимость. Можете ли вы предложить мне некоторые способы ее преодоления?
добавлено автор user1190882, источник

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( );
1
добавлено
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest