Ошибка состояния C2535 dflt_ctor_closure (void) ': функция-член уже определена или объявлена - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть проект C ++, и я получаю эту ошибку.Я знаю, что ошибка в том, что у меня есть 2 функции с одинаковым именем, но у них разные аргументы.Как это исправить?

BaseE::BaseE(double x=0.0, double y=0.0)
{
    ......
}

BaseE::BaseE(double x=0.0):
{
    ....
}

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Как у вас сейчас, когда компилятор встречает вызов BaseE (), он не может определить, намеревались ли вы вызвать BaseE (0.0, 0.0) (первый конструктор с аргументами по умолчанию) или BaseE (0.0) (2-й конструктор с аргументами по умолчанию).Это неоднозначность, на которую жалуется компилятор;Вы должны удалить аргументы по умолчанию из (как минимум) одной из реализаций конструктора.

0 голосов
/ 26 ноября 2018

Конструктор по умолчанию для класса - это конструктор, который не принимает аргументов.Это особенное: компилятор сгенерирует его, если вы его не определите (упрощенно).Здесь у класса есть два конструктора по умолчанию, потому что каждый из них может быть вызван без аргументов.Вот почему это жалуется.Слишком много аргументов по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...